1
0
mirror of https://github.com/jaredtao/TaoQuick.git synced 2025-01-31 21:22:58 +08:00
TaoQuick/.github/workflows/windows.yml
2020-12-01 20:29:56 +08:00

143 lines
5.2 KiB
YAML

# 参考文档 https://docs.github.com/en/free-pro-team@latest/actions/
name: Windows
on:
# push代码时触发workflow
push:
paths-ignore:
- '*.md'
- 'LICENSE'
- "doc/**"
- "preview/**"
# pull_request时触发workflow
pull_request:
paths-ignore:
- 'README.md'
- 'LICENSE'
- "doc/**"
- "preview/**"
jobs:
build:
name: Build
# 运行平台, windows-latest目前是windows server 2019
# 参考文档 https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md
runs-on: windows-2019
strategy:
# 矩阵配置
matrix:
qt_ver: [5.9.9,5.12.10,5.15.2]
qt_target: [desktop]
# mingw用不了
qt_arch: [win32_msvc2015,win32_msvc2015_64,win32_msvc2017, win64_msvc2017_64]
# 额外设置msvc_arch
include:
# 5.9.9 参考 https://mirrors.cloud.tencent.com/qt/online/qtsdkrepository/windows_x86/desktop/qt5_599/
- qt_ver: 5.9.9
qt_arch: win32_msvc2015
msvc_arch: x86
qt_arch_install: msvc2015
- qt_ver: 5.9.9
qt_arch: win64_msvc2017_64
msvc_arch: x64
qt_arch_install: msvc2017_64
# 5.12.10 参考 https://mirrors.cloud.tencent.com/qt/online/qtsdkrepository/windows_x86/desktop/qt5_51210/
- qt_ver: 5.12.10
qt_arch: win32_msvc2017
msvc_arch: x86
qt_arch_install: msvc2017
- qt_ver: 5.12.10
qt_arch: win64_msvc2017_64
msvc_arch: x64
qt_arch_install: msvc2017_64
# 5.15.2 参考 https://mirrors.cloud.tencent.com/qt/online/qtsdkrepository/windows_x86/desktop/qt5_5152/
- qt_ver: 5.15.2
qt_arch: win32_msvc2019
msvc_arch: x86
qt_arch_install: msvc2019
- qt_ver: 5.15.2
qt_arch: win64_msvc2019_64
msvc_arch: x64
qt_arch_install: msvc2019_64
env:
targetName: TaoQuickShow.exe
# 步骤
steps:
# - name: cacheQt
# id: WindowsCacheQt
# uses: actions/cache@v1
# with:
# path: ../Qt/${{matrix.qt_ver}}/${{matrix.qt_arch_install}}
# key: ${{ runner.os }}-Qt/${{matrix.qt_ver}}/${{matrix.qt_arch}}
# - name: setupQt
# if: steps.WindowsCacheQt.outputs.cache-hit == 'true'
# shell: pwsh
# env:
# QtPath: ../Qt/${{matrix.qt_ver}}/${{matrix.qt_arch_install}}
# run: |
# $qt_Path=${env:QtPath}
# echo "::set-env name=Qt5_Dir::$qt_Path"
# echo "::add-path::$qt_Path/bin"
# 安装Qt
- name: Install Qt
# if: steps.WindowsCacheQt.outputs.cache-hit != 'true'
# 使用外部action。这个action专门用来安装Qt
uses: jurplel/install-qt-action@v2.8.0
with:
# Version of Qt to install
version: ${{ matrix.qt_ver }}
# Target platform for build
target: ${{ matrix.qt_target }}
# Architecture for Windows/Android
arch: ${{ matrix.qt_arch }}
# dir: 'C:\'
# dir: ${{ github.workspace }}
# dir: '${{ github.workspace }}'
# cached: ${{ steps.WindowsCacheQt.outputs.cache-hit }}
cached: 'false'
# 拉取代码
- uses: actions/checkout@v1
with:
fetch-depth: 1
# 编译msvc
- name: build-msvc
shell: cmd
env:
vc_arch: ${{ matrix.msvc_arch }}
run: |
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" %vc_arch%
qmake
nmake
# tag 打包
- name: package
if: startsWith(github.event.ref, 'refs/tags/')
env:
VCINSTALLDIR: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC'
archiveName: ${{ matrix.qt_ver }}-${{ matrix.qt_target }}-${{ matrix.qt_arch }}
shell: pwsh
run: |
# 创建文件夹
New-Item -ItemType Directory ${env:archiveName}
# 拷贝exe
Copy-Item bin\release\${env:targetName} ${env:archiveName}\
Copy-Item bin\release\Trans ${env:archiveName}\Trans -Recurse -Exclude *.ilk,*.exp,*.lib,*.pdb
# 拷贝依赖
windeployqt --qmldir . ${env:archiveName}\${env:targetName}
# 打包zip
Compress-Archive -Path ${env:archiveName} ${env:archiveName}'.zip'
# 记录packageName给后续step
$name = ${env:archiveName}
echo "::set-output name=packageName::$name"
# 上传artifacts
# - uses: actions/upload-artifact@v2
# with:
# name: ${{ steps.package.outputs.packageName }}
# path: ${{ steps.package.outputs.packageName }}.zip
# tag 上传Release
- name: uploadRelease
if: startsWith(github.event.ref, 'refs/tags/')
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ steps.package.outputs.packageName }}.zip
asset_name: ${{ steps.package.outputs.packageName }}.zip
tag: ${{ github.ref }}
overwrite: true