ci: run nightly build ignore docs #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: NekoXray nightly build | |
on: | |
push: | |
branches: | |
- dev | |
paths: | |
- "**/*.ui" | |
- "**/*.cpp" | |
- "**/*.h" | |
- "**/*.hpp" | |
- "CMakeList.txt" | |
- "go/**" | |
- ".github/workflows/nightly-build.yml" | |
pull_request: | |
types: [opened, synchronize, reopened] | |
paths: | |
- "**/*.ui" | |
- "**/*.cpp" | |
- "**/*.h" | |
- "**/*.hpp" | |
- "CMakeList.txt" | |
- "go/**" | |
- ".github/workflows/nightly-build.yml" | |
jobs: | |
build-go: | |
strategy: | |
matrix: | |
cross_os: [ windows, linux ] | |
cross_arch: [ amd64 ] | |
include: | |
- cross_os: public_res | |
cross_arch: public_res | |
fail-fast: false | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checking out sources | |
uses: actions/checkout@v3 | |
- name: Go Status | |
run: git ls-files go | xargs cat | sha1sum > go_status | |
- name: Cache Common Download | |
id: cache-common | |
uses: actions/cache@v3 | |
with: | |
path: artifacts.tgz | |
key: CommonCache-${{ matrix.cross_os }}-${{ matrix.cross_arch }}-${{ hashFiles('libs/*.sh', 'go_status', '*.txt') }} | |
- name: Install Golang | |
if: steps.cache-common.outputs.cache-hit != 'true' | |
uses: actions/setup-go@v3 | |
with: | |
go-version: ^1.20 | |
- name: Build golang parts | |
if: steps.cache-common.outputs.cache-hit != 'true' | |
shell: bash | |
run: | | |
[ ${{ matrix.cross_os }} == public_res ] || ./libs/get_source.sh | |
[ ${{ matrix.cross_os }} == public_res ] || GOOS=${{ matrix.cross_os }} GOARCH=${{ matrix.cross_arch }} ./libs/build_go.sh | |
[ ${{ matrix.cross_os }} == public_res ] || exit 0 | |
./libs/build_public_res.sh | |
- name: Tar files | |
if: steps.cache-common.outputs.cache-hit != 'true' | |
run: tar czvf artifacts.tgz ./deployment | |
- name: Uploading Artifact | |
uses: actions/upload-artifact@master | |
with: | |
name: NekoRay-${{ github.sha }}-Common-${{ matrix.cross_os }}-${{ matrix.cross_arch }} | |
path: artifacts.tgz | |
build-cpp: | |
strategy: | |
matrix: | |
include: | |
- platform: windows-2022 | |
arch: x64 | |
qt_version: "5.15" | |
- platform: windows-2022 | |
arch: x64 | |
qt_version: "6.5" | |
- platform: ubuntu-20.04 | |
arch: x64 | |
qt_version: "5.12" | |
fail-fast: false | |
runs-on: ${{ matrix.platform }} | |
env: | |
ACTIONS_ALLOW_UNSECURE_COMMANDS: true | |
steps: | |
- name: Checking out sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: "recursive" | |
- name: Install MSVC compiler | |
if: matrix.platform == 'windows-2022' | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
# 14.1 is for vs2017, 14.2 is vs2019, following the upstream vcpkg build from Qv2ray-deps repo | |
toolset: 14.2 | |
arch: ${{ matrix.arch }} | |
# ========================================================================================================= Qt Install | |
- name: Windows - Download Custom Qt ${{ matrix.qt_version }} SDK | |
shell: bash | |
if: matrix.platform == 'windows-2022' | |
env: | |
DL_QT_VER: ${{ matrix.qt_version }} | |
run: bash ./libs/download_qtsdk_win.sh | |
# ========================================================================================================= 编译与 Qt 无关的依赖 | |
- name: Install ninja-build tool | |
uses: seanmiddleditch/gha-setup-ninja@v3 | |
- name: Cache Download | |
id: cache-deps | |
uses: actions/cache@v3 | |
with: | |
path: libs/deps | |
key: DepsCache-${{ matrix.platform }}-${{ matrix.arch }}-${{ hashFiles('libs/build_deps_*.sh') }}-Qt${{ matrix.qt_version }} | |
- name: Build Dependencies | |
shell: bash | |
if: steps.cache-deps.outputs.cache-hit != 'true' && matrix.platform != 'ubuntu-20.04' | |
run: ./libs/build_deps_all.sh | |
- name: Build Dependencies (Docker) | |
shell: bash | |
if: steps.cache-deps.outputs.cache-hit != 'true' && matrix.platform == 'ubuntu-20.04' | |
run: | | |
docker run --rm \ | |
-v $PWD:/nekoray \ | |
-w /nekoray \ | |
ghcr.io/matsuridayo/debian10-qt5:20230131 \ | |
bash -c "./libs/build_deps_all.sh" | |
# ========================================================================================================= Generate MakeFile and Build | |
- name: Windows - Generate MakeFile and Build | |
shell: bash | |
if: matrix.platform == 'windows-2022' | |
env: | |
DL_QT_VER: ${{ matrix.qt_version }} | |
CC: cl.exe | |
CXX: cl.exe | |
run: | | |
source libs/env_qtsdk.sh $PWD/qtsdk/Qt | |
mkdir build | |
cd build | |
if [ "$DL_QT_VER" == "5.15" ]; then | |
cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. | |
else | |
cmake -GNinja -DQT_VERSION_MAJOR=6 -DCMAKE_BUILD_TYPE=Release .. | |
fi | |
ninja -j2 | |
cd .. | |
./libs/deploy_windows64.sh | |
- name: Linux - Generate MakeFile and Build | |
shell: bash | |
if: matrix.platform == 'ubuntu-20.04' | |
run: | | |
docker run --rm \ | |
-v $PWD:/nekoray \ | |
-w /nekoray \ | |
ghcr.io/matsuridayo/debian10-qt5:20230131 \ | |
bash -c "mkdir build && pushd build && cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. && ninja -j2 && popd &&./libs/deploy_linux64.sh" | |
# ========================================================================================================= Deployments | |
- name: Tar files | |
shell: bash | |
run: tar czvf artifacts.tgz ./deployment | |
- name: Uploading Artifact | |
uses: actions/upload-artifact@master | |
with: | |
name: NekoRay-${{ github.sha }}-${{ matrix.platform }}-${{ matrix.arch }}-Qt${{ matrix.qt_version }} | |
path: artifacts.tgz | |
pack: | |
name: Pack | |
runs-on: ubuntu-latest | |
needs: | |
- build-cpp | |
- build-go | |
steps: | |
- name: Checking out sources | |
uses: actions/checkout@v3 | |
- name: Download Artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
path: download-artifact | |
- name: Pack | |
run: | | |
curl -Lo - https://github.com/tcnksm/ghr/releases/download/v0.13.0/ghr_v0.13.0_linux_amd64.tar.gz | tar xzv | |
mv ghr*linux_amd64/ghr . | |
#### | |
source libs/env_deploy.sh | |
find . -name artifacts.tgz | xargs -n1 tar xvzf | |
cd deployment | |
cp -r public_res/* linux64 | |
cp -r public_res/* windows64 | |
cp -r public_res/* windows7-x64 | |
cp windows64/neko*core.exe windows7-x64 | |
cp windows64/updater.exe windows7-x64 | |
rm -rf public_res *.pdb | |
#### | |
mv linux64 nekoray | |
zip -r $version_standalone-linux64.zip nekoray | |
rm -rf nekoray | |
#### | |
mv windows64 nekoray | |
zip -r $version_standalone-windows64.zip nekoray | |
rm -rf nekoray | |
#### | |
mv windows7-x64 nekoray | |
zip -r $version_standalone-windows7-x64.zip nekoray | |
rm -rf nekoray | |
- name: Clean Up | |
run: | | |
cd deployment | |
rm -rf linux64 | |
rm -rf windows64 | |
rm -rf windows7-x64 | |
rm -rf public_res | |
rm -rf *.pdb | |
- name: Uploading Artifact | |
uses: actions/upload-artifact@master | |
with: | |
name: Deployment-${{ github.sha }} | |
path: deployment |