Skip to content

[build] 改进Windows环境下的构建流程 #81

[build] 改进Windows环境下的构建流程

[build] 改进Windows环境下的构建流程 #81

Workflow file for this run

name: CMake Build
on:
# push代码时触发workflow
push:
paths-ignore: # 下列文件的变更不触发部署,可以自行添加
- 'doc/**'
- 'translations/**'
- '.clang-*'
- '.gitignore'
- '*.pri'
- 'LICENSE'
- '*.pro'
- 'README*'
pull_request:
paths-ignore: # 下列文件的变更不触发部署,可以自行添加
- 'doc/**'
- 'translations/**'
- '.clang-*'
- '.gitignore'
- '*.pri'
- 'LICENSE'
- '*.pro'
- 'README*'
env:
MACOSX_DEPLOYMENT_TARGET: 11.0
jobs:
build:
name: Build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- windows-latest
- macos-latest
- ubuntu-latest
build_type:
- "RelWithDebInfo"
generators:
- "Ninja"
arch:
- x86_64
include:
- os: macos-latest
build_type: "RelWithDebInfo"
generators: "Ninja"
arch: arm64
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: ./.github/actions/install-dependencies
with:
os_name: ${{ matrix.os }}
- name: Configure and build windows
if: startsWith(matrix.os, 'windows')
shell: pwsh
run: |
.\scripts\windows\setVsDev.ps1 -Latest -Arch "x64"
cmake `
-S . `
-B ./build `
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} `
-G "${{ matrix.generators }}"
cmake --build ./build --config ${{ matrix.build_type }}
- name: Configure ubuntu
if: startsWith(matrix.os, 'ubuntu')
shell: bash
run: |
cmake \
-S . \
-B ./build \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-G "${{ matrix.generators }}"
- name: Configure macos
if: startsWith(matrix.os, 'macos')
shell: bash
run: |
cmake \
-S . \
-B ./build \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-DCMAKE_OSX_ARCHITECTURES="${{ matrix.arch }}" \
-G "${{ matrix.generators }}"
- name: Build ubuntu or macos
if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos')
shell: bash
run: |
cmake --build ./build --config ${{ matrix.build_type }}
- name: Deploy windows
if: startsWith(matrix.os, 'windows')
shell: bash
run: |
./../../packaging/windows/deploy.sh
working-directory: ./bin-64/${{ matrix.build_type }}
- name: Deploy macos
if: startsWith(matrix.os, 'macos')
shell: bash
run: |
sudo chmod 755 ./../../packaging/macos/deploy.sh
./../../packaging/macos/deploy.sh
working-directory: ./bin-64/${{ matrix.build_type }}
- name: Deploy ubuntu
if: startsWith(matrix.os, 'ubuntu')
shell: bash
run: |
sudo chmod 755 ./../../packaging/ubuntu/deploy.sh
./../../packaging/ubuntu/deploy.sh
working-directory: ./bin-64/${{ matrix.build_type }}
- name: 7z package
shell: bash
run: |
ls -al ./bin-64/${{ matrix.build_type }}
CURRENT_DATE=$(date '+%Y%m%d')
filename=Qt-App_${{ runner.os }}_${{ matrix.arch }}_${CURRENT_DATE}.7z
echo "artifactPath=$filename" >> $GITHUB_ENV
7z a -t7z -r -mx=9 -mmt ${filename} ./bin-64/${{ matrix.build_type }}/*
- name: Upload packages
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.os }}-${{matrix.arch}}-${{ matrix.build_type }}
path: ${{ env.artifactPath }}
release:
name: Release
needs: build
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- name: Download fonts
shell: bash
run: |
wget -c -nv "https://github.com/RealChuan/Qt-App/releases/download/0.0.1/fonts.7z"
- name: Download packages
uses: actions/download-artifact@v4
- name: Move packages
shell: bash
run: |
ls -al
mv ./windows*/*.7z .
mv ./ubuntu*/*.7z .
mv ./macos*/*.7z .
ls -al
- name: Rename Files According to Tag
shell: bash
run: |
TAG_NAME="${GITHUB_REF#refs/tags/}"
for FILE in Qt-App_*.7z; do
if [[ -f "$FILE" ]]; then
BASENAME=$(basename "$FILE" .7z)
REST="${BASENAME#Qt-App_}"
NEW_BASENAME="Qt-App_${TAG_NAME}_${REST}"
NEW_FILE="${NEW_BASENAME}.7z"
mv "$FILE" "$NEW_FILE"
echo "Renamed $FILE to $NEW_FILE"
fi
done
ls -al
- name: Create release
uses: softprops/action-gh-release@v2
with:
draft: false
prerelease: false
generate_release_notes: true
files: |
*.7z