Nekoray build matrix - cmake #33
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, darwin ] | |
cross_arch: [ amd64, arm64 ] | |
include: | |
- cross_os: public_res | |
cross_arch: public_res | |
fail-fast: false | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checking out sources | |
uses: actions/[email protected] | |
- name: Go Status | |
run: git ls-files go | xargs cat | sha1sum > go_status | |
- name: Cache Common Download | |
id: cache-common | |
uses: actions/[email protected] | |
with: | |
path: artifacts.tgz | |
key: CommonCache-${{ matrix.cross_os }}-${{ matrix.cross_arch }}-${{ hashFiles('script/*.sh', 'go_status', '*.txt') }} | |
- name: Install Golang | |
if: steps.cache-common.outputs.cache-hit != 'true' && matrix.cross_os != 'windows7' | |
uses: actions/[email protected] | |
with: | |
go-version: '1.23.3' | |
- 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/[email protected] | |
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.1" | |
target: amd64 | |
- platform: ubuntu-latest | |
qt_version: "6.8.1" | |
target: amd64 | |
- platform: macos-latest | |
qt_version: "6.8.1" | |
target: x86_64 | |
- platform: macos-latest | |
qt_version: "6.8.1" | |
target: arm64 | |
fail-fast: false | |
runs-on: ${{ matrix.platform }} | |
env: | |
ACTIONS_ALLOW_UNSECURE_COMMANDS: true | |
steps: | |
- name: Checking out sources | |
uses: actions/[email protected] | |
with: | |
submodules: "recursive" | |
# - name: Install MSVC compiler | |
# if: matrix.platform == 'windows-latest' | |
# uses: ilammy/[email protected] | |
- name: Download Artifacts | |
uses: actions/[email protected] | |
with: | |
path: download-artifact | |
# ========================================================================================================= Qt Install | |
- name: Install Qt | |
uses: jurplel/[email protected] | |
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/[email protected] | |
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-latest' | |
run: | | |
sudo apt update && sudo apt upgrade -y | |
mkdir build | |
pushd build | |
cmake -GNinja -DQT_VERSION_MAJOR=6 -DCMAKE_BUILD_TYPE=Release .. | |
ninja | |
popd | |
./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/[email protected] | |
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/[email protected] | |
- name: Download Artifacts | |
uses: actions/[email protected] | |
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/[email protected] | |
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 |