Nekoray build matrix - cmake #282
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: Nekoray build matrix - cmake | |
on: | |
workflow_dispatch: | |
inputs: | |
tag: | |
description: 'Release Tag' | |
required: true | |
publish: | |
description: 'Publish: If want ignore' | |
required: false | |
artifact-pack: | |
description: 'artifact-pack: If want ignore' | |
required: false | |
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.21 | |
- 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: "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 | |
cmake -GNinja -DQT_VERSION_MAJOR=6 -DCMAKE_BUILD_TYPE=Release .. | |
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 && 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 | |
publish: | |
name: Pack & Publish Release | |
if: github.event.inputs.artifact-pack != 'y' | |
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 | |
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 | |
- name: Pack Debian | |
run: | | |
source libs/env_deploy.sh | |
find . -name artifacts.tgz | xargs -n1 tar xvzf | |
cd deployment | |
cp -r public_res/* linux64 | |
#### | |
bash ../libs/package_debian.sh ${{ github.event.inputs.tag }} | |
mv nekoray.deb $version_standalone-debian-x64.deb | |
sudo rm -rf nekoray | |
- name: Pack AppImage | |
run: | | |
source libs/env_deploy.sh | |
find . -name artifacts.tgz | xargs -n1 tar xvzf | |
cd deployment | |
cp -r public_res/* linux64 | |
#### | |
bash ../libs/package_appimage.sh | |
mv nekoray-x86_64.AppImage $version_standalone-linux-x64.AppImage | |
- name: Clean Up | |
run: | | |
cd deployment | |
rm -rf linux64 | |
rm -rf windows64 | |
rm -rf public_res | |
rm -rf *.pdb | |
- name: Uploading Artifact | |
uses: actions/upload-artifact@master | |
with: | |
name: Deployment-${{ github.sha }} | |
path: deployment | |
- name: Release | |
if: github.event.inputs.publish != 'y' | |
run: | | |
./ghr -delete -t "${{ github.token }}" -n "${{ github.event.inputs.tag }}" "${{ github.event.inputs.tag }}" deployment |