Throne build matrix #6
This file contains hidden or 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: | |
| include: | |
| - cross_os: public_res | |
| cross_arch: public_res | |
| go_version: "1.24.1" | |
| - cross_os: windows | |
| cross_arch: amd64 | |
| go_version: "1.24.1" | |
| - cross_os: linux | |
| cross_arch: amd64 | |
| go_version: "1.24.1" | |
| - cross_os: darwin | |
| cross_arch: amd64 | |
| go_version: "1.24.1" | |
| - cross_os: darwin | |
| cross_arch: arm64 | |
| go_version: "1.24.1" | |
| fail-fast: false | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checking out sources | |
| uses: actions/checkout@v4.2.2 | |
| - name: Cache Common Download | |
| id: cache-common | |
| uses: actions/cache@v4.2.0 | |
| with: | |
| path: artifacts.tgz | |
| key: CommonCache-${{ matrix.cross_os }}-${{ matrix.cross_arch }}-${{ hashFiles('script/build_go.sh', 'core/*') }}-${{ matrix.go_version }} | |
| - name: Install Golang | |
| if: steps.cache-common.outputs.cache-hit != 'true' | |
| uses: actions/setup-go@v5.2.0 | |
| with: | |
| go-version: ${{ matrix.go_version }} | |
| cache-dependency-path: | | |
| core/server/go.sum | |
| core/updater/go.sum | |
| - name: Build golang parts | |
| if: steps.cache-common.outputs.cache-hit != 'true' | |
| shell: bash | |
| run: | | |
| [ ${{ matrix.cross_os }} == public_res ] || GOOS=${{ matrix.cross_os }} GOARCH=${{ matrix.cross_arch }} ./script/build_go.sh | |
| [ ${{ matrix.cross_os }} == public_res ] || exit 0 | |
| ./script/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@v4.6.0 | |
| with: | |
| name: NekoRay-${{ github.sha }}-Common-${{ matrix.cross_os }}-${{ matrix.cross_arch }} | |
| path: artifacts.tgz | |
| build-cpp: | |
| needs: | |
| - build-go | |
| strategy: | |
| matrix: | |
| include: | |
| - platform: windows-latest | |
| qt_version: "6.8.2" | |
| target: amd64 | |
| - platform: ubuntu-22.04 | |
| qt_version: "6.8.2" | |
| target: amd64 | |
| - platform: macos-latest | |
| qt_version: "6.8.2" | |
| target: x86_64 | |
| - platform: macos-latest | |
| qt_version: "6.8.2" | |
| target: arm64 | |
| fail-fast: false | |
| runs-on: ${{ matrix.platform }} | |
| env: | |
| ACTIONS_ALLOW_UNSECURE_COMMANDS: true | |
| steps: | |
| - name: Checking out sources | |
| uses: actions/checkout@v4.2.2 | |
| with: | |
| submodules: "recursive" | |
| - name: Install MSVC compiler | |
| if: matrix.platform == 'windows-latest' | |
| uses: ilammy/msvc-dev-cmd@v1.13.0 | |
| - name: Download Artifacts | |
| uses: actions/download-artifact@v4.1.8 | |
| with: | |
| path: download-artifact | |
| # ========================================================================================================= Qt Install | |
| - name: Install Qt | |
| uses: jurplel/install-qt-action@v4.1.1 | |
| with: | |
| version: ${{ matrix.qt_version }} | |
| setup-python: true | |
| cache: true | |
| cache-key-prefix: QtCache-${{ matrix.platform }}-${{ matrix.target }} | |
| # ========================================================================================================= 编译与 Qt 无关的依赖 | |
| - name: Install ninja-build tool | |
| uses: seanmiddleditch/gha-setup-ninja@v5 | |
| - name: Cache Download | |
| id: cache-deps | |
| uses: actions/cache@v4.2.0 | |
| with: | |
| path: libs/deps | |
| key: DepsCache-${{ matrix.platform }}-${{ matrix.target }}-${{ hashFiles('script/build_deps_*.sh') }}-Qt${{ matrix.qt_version }} | |
| - name: Build Dependencies | |
| shell: bash | |
| if: steps.cache-deps.outputs.cache-hit != 'true' | |
| run: ./script/build_deps_all.sh ${{ matrix.target }} | |
| # ========================================================================================================= Generate MakeFile and Build | |
| - name: Windows - Generate MakeFile and Build | |
| shell: bash | |
| if: matrix.platform == 'windows-latest' | |
| env: | |
| CC: cl.exe | |
| CXX: cl.exe | |
| run: | | |
| mkdir build | |
| cd build | |
| cmake -GNinja -DQT_VERSION_MAJOR=6 -DCMAKE_BUILD_TYPE=Release .. | |
| ninja -j2 | |
| cd .. | |
| ./script/deploy_windows64.sh | |
| - name: Linux - Generate MakeFile and Build | |
| shell: bash | |
| if: matrix.platform == 'ubuntu-22.04' | |
| run: | | |
| sudo apt update && sudo apt upgrade -y | |
| mkdir build | |
| cd build | |
| cmake -GNinja -DQT_VERSION_MAJOR=6 -DCMAKE_BUILD_TYPE=Release .. | |
| ninja | |
| cd .. | |
| ./script/deploy_linux64.sh | |
| - name: macOS - Generate MakeFile and Build | |
| shell: bash | |
| if: matrix.platform == 'macos-latest' | |
| run: | | |
| mkdir build | |
| cd build | |
| cmake -GNinja -DQT_VERSION_MAJOR=6 -DCMAKE_BUILD_TYPE=Release -DNKR_PACKAGE_MACOS=1 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DCMAKE_OSX_ARCHITECTURES=${{ matrix.target }} .. | |
| ninja | |
| cd .. | |
| ./script/deploy_macos.sh ${{ matrix.target }} | |
| # ========================================================================================================= Deployments | |
| - name: Tar files | |
| shell: bash | |
| run: tar czvf artifacts.tgz ./deployment | |
| - name: Uploading Artifact | |
| uses: actions/upload-artifact@v4.6.0 | |
| with: | |
| name: NekoRay-${{ github.sha }}-${{ matrix.platform }}-${{ matrix.target }}-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 | |
| steps: | |
| - name: Checking out sources | |
| uses: actions/checkout@v4.2.2 | |
| - name: Download Artifacts | |
| uses: actions/download-artifact@v4.1.8 | |
| with: | |
| path: download-artifact | |
| - name: Pack | |
| run: | | |
| curl -Lo - https://github.com/tcnksm/ghr/releases/download/v0.16.2/ghr_v0.16.2_linux_amd64.tar.gz | tar xzv | |
| mv ghr*linux_amd64/ghr . | |
| source script/env_deploy.sh | |
| find . -name artifacts.tgz | xargs -n1 tar xvzf | |
| cd deployment | |
| rm -rf *.pdb | |
| #### | |
| bash ../script/pack_debian.sh ${{ github.event.inputs.tag }} | |
| mv nekoray.deb $version_standalone-debian-x64.deb | |
| rm -rf nekoray | |
| #### | |
| 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 | |
| #### | |
| mkdir Nekoray | |
| mv macos-arm64/nekoray.app Nekoray/nekoray.app | |
| zip --symlinks -r $version_standalone-macos-arm64.zip Nekoray | |
| rm -rf macos-arm64 | |
| rm -rf Nekoray | |
| #### | |
| mkdir Nekoray | |
| mv macos-amd64/nekoray.app Nekoray/nekoray.app | |
| zip --symlinks -r $version_standalone-macos-amd64.zip Nekoray | |
| rm -rf macos-amd64 | |
| rm -rf Nekoray | |
| - name: Clean Up | |
| run: | | |
| cd deployment | |
| rm -rf windows-arm64 | |
| rm -rf linux-arm64 | |
| rm -rf linux64 | |
| rm -rf windows64 | |
| rm -rf macos-amd64 | |
| rm -rf macos-arm64 | |
| rm -rf public_res | |
| rm -rf *.pdb | |
| - name: Uploading Artifact | |
| uses: actions/upload-artifact@v4.6.0 | |
| with: | |
| name: Deployment-${{ github.sha }} | |
| path: deployment | |
| - name: PreRelease | |
| if: github.event.inputs.publish == 'p' | |
| run: | | |
| ./ghr -prerelease -delete -t "${{ github.token }}" -n "${{ github.event.inputs.tag }}" "${{ github.event.inputs.tag }}" deployment | |
| - name: Release | |
| if: github.event.inputs.publish == '' | |
| run: | | |
| ./ghr -delete -t "${{ github.token }}" -n "${{ github.event.inputs.tag }}" "${{ github.event.inputs.tag }}" deployment |