# 参考文档 https://docs.github.com/en/free-pro-team@latest/actions/ name: Windows on: # push代码时触发workflow push: paths-ignore: - '*.md' - 'LICENSE' - "doc/**" - "preview/**" - ".github/workflows/android.yml" - ".github/workflows/ios.yml" - ".github/workflows/macos.yml" - ".github/workflows/ubuntu.yml" # pull_request时触发workflow pull_request: paths-ignore: - 'README.md' - 'LICENSE' - "doc/**" - "preview/**" - ".github/workflows/android.yml" - ".github/workflows/ios.yml" - ".github/workflows/macos.yml" - ".github/workflows/ubuntu.yml" 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.10.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 }} aqtversion: '==0.10.0' dir: 'C:/QtPath' # 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