From 2e17ba835526b0cbfb22da2074c421c5f81557c4 Mon Sep 17 00:00:00 2001 From: rankun Date: Sun, 22 Mar 2020 22:12:23 +0800 Subject: [PATCH] chore: update windows and mac yml --- .github/workflows/macos.yml | 156 ++++++++++------------------------ .github/workflows/windows.yml | 15 ++-- ci/mac/build_for_mac.sh | 7 +- ci/mac/publish_for_mac.sh | 5 +- 4 files changed, 58 insertions(+), 125 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index abb44a8..780f715 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -13,135 +13,65 @@ on: jobs: build: name: Build - runs-on: ${{ matrix.os }} + runs-on: macos-latest strategy: matrix: - os: [macos-latest] - qt_ver: [5.12.6] - qt_arch: [clang_64] + qt-ver: [5.12.6] + qt-target: [desktop] + qt-arch-install: clang_64 + clang-arch: x64 env: - targetName: QtScrcpy + target-name: QtScrcpy + qt-install-path: ${{ github.workspace }}/${{ matrix.qt-ver }} + plantform-des: mac steps: - name: Cache Qt - id: MacosCacheQt + id: cache-qt uses: actions/cache@v1 with: - path: ../Qt/${{matrix.qt_ver}}/${{matrix.qt_arch}} - key: ${{ runner.os }}-Qt/${{matrix.qt_ver}}/${{matrix.qt_arch}} - - name: Setup Qt - if: steps.MacosCacheQt.outputs.cache-hit == 'true' - shell: pwsh - env: - QtPath: ../Qt/${{matrix.qt_ver}}/${{matrix.qt_arch}} - run: | - $qt_Path=${env:QtPath} - echo "::set-env name=Qt5_Dir::$qt_Path" - echo "::add-path::$qt_Path/bin" + path: ${{ env.qt-install-path }}/${{ matrix.qt-arch-install }} + key: ${{ runner.os }}/${{ matrix.qt-ver }}/${{ matrix.qt-arch-install }} - name: Install Qt - if: steps.MacosCacheQt.outputs.cache-hit != 'true' uses: jurplel/install-qt-action@v2.0.0 with: - version: ${{ matrix.qt_ver }} - + version: ${{ matrix.qt-ver }} + cached: ${{ steps.cache-qt.outputs.cache-hit }} - uses: actions/checkout@v1 with: fetch-depth: 1 # 编译 - name: Build MacOS + env: + ENV_QT_PATH: ${{ env.qt-install-path }} + run: ci/mac/build_for_mac.sh release + # 获取ref最后一个/后的内容 + - name: Get the version + shell: bash + id: get-version + # ${ GITHUB_REF/refs\/tags\// }是linux shell ${}的变量替换语法 + run: echo ::set-output name=version::${GITHUB_REF##*/} + # 打包 + - name: Package + env: + ENV_QT_PATH: ${{ env.qt-install-path }} + publish_name: ${{ env.target-name }}-${{ env.plantform-des }}-${{ matrix.clang-arch }}-${{ steps.get-version.outputs.version }} run: | - export ENV_QT_CLANG=$(pwd)/${{env.Qt5_Dir}} - ci/mac/build_for_mac.sh release - # 发布 - - name: Publish - if: startsWith(github.event.ref, 'refs/tags/') - run: | - export ENV_QT_CLANG=$(pwd)/${{env.Qt5_Dir}} ci/mac/publish_for_mac.sh ../build ci/mac/package_for_mac.sh - # tag 打包 - - name: Package - if: startsWith(github.event.ref, 'refs/tags/') - shell: pwsh - env: - ref: ${{ github.event.ref }} - run: | - [string]$tag = ${env:ref}.Substring(${env:ref}.LastIndexOf('/') + 1) - [string]$name = 'QtScrcpy-mac-x64-' + ${tag} - # 打包zip - Compress-Archive -Path ci\build\QtScrcpy.dmg ci\build\${name}.zip - # 查询Release - - name: Query Release - if: startsWith(github.event.ref, 'refs/tags/') - shell: pwsh - env: - githubFullName: ${{ github.event.repository.full_name }} - ref: ${{ github.event.ref }} - github_token: ${{ secrets.GITHUB_TOKEN }} - run: | - [string]$tag = ${env:ref}.Substring(${env:ref}.LastIndexOf('/') + 1) - [string]$url = 'https://api.github.com/repos/' + ${env:githubFullName} + '/releases/tags/' + ${tag} - - $token = ${env:github_token} - $authInfo = ("{0}" -f $token) - $authInfo = [System.Text.Encoding]::UTF8.GetBytes($authInfo) - $authInfo = [System.Convert]::ToBase64String($authInfo) - $headers = @{Authorization=("${env:GITHUB_ACTOR} {0}" -f $authInfo)} - - $response={} - try { - $response = Invoke-RestMethod -Uri $url -Headers $headers -Method Get - } catch { - Write-Host "StatusCode:" $_.Exception.Response.StatusCode.value__ - Write-Host "StatusDescription:" $_.Exception.Response.StatusDescription - # 没查到 - return 1 - } - [string]$latestUpUrl = $response.upload_url - Write-Host 'latestUpUrl:'$latestUpUrl - if ($latestUpUrl.Length -eq 0) { - # 没查到 - return 1 - } - # 获取上传url - - name: Get Release Url - if: startsWith(github.event.ref, 'refs/tags/') - shell: pwsh - env: - githubFullName: ${{ github.event.repository.full_name }} - ref: ${{ github.event.ref }} - github_token: ${{ secrets.GITHUB_TOKEN }} - run: | - [string]$tag = ${env:ref}.Substring(${env:ref}.LastIndexOf('/') + 1) - [string]$url = 'https://api.github.com/repos/' + ${env:githubFullName} + '/releases/tags/' + ${tag} - - # github token防止api rate limite,否则一个小时只能60个api请求 - $token = ${env:github_token} - $authInfo = ("{0}" -f $token) - $authInfo = [System.Text.Encoding]::UTF8.GetBytes($authInfo) - $authInfo = [System.Convert]::ToBase64String($authInfo) - $headers = @{Authorization=("${env:GITHUB_ACTOR} {0}" -f $authInfo)} - - $response = Invoke-RestMethod -Uri $url -ContentType 'text/json' -Headers $headers -Method Get - Write-Host 'headers:'$headers - Write-Host 'response:'$response - [string]$latestUpUrl = $response.upload_url - Write-Host 'latestUpUrl:'$latestUpUrl - echo "::set-env name=uploadUrl::$latestUpUrl" - Write-Host 'env uploadUrl:'${env:uploadUrl} - [string]$name = 'QtScrcpy-mac-x64-' + ${tag} - # 记录环境变量packageName给后续step - echo "::set-env name=packageName::$name" - # 打印环境变量packageName - Write-Host 'packageName:'${env:packageName} - # tag 上传Release - - name: Upload Release - id: uploadRelease - if: startsWith(github.event.ref, 'refs/tags/') - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - uses: actions/upload-release-asset@v1.0.1 + mv ci/build/QtScrcpy.app ci/build/${{ publish_name }}.app + mv ci/build/QtScrcpy.dmg ci/build/${{ publish_name }}.dmg + echo "::set-env name=artifact-name::${{ env.publish_name }}.app" + - uses: actions/upload-artifact@v1 with: - upload_url: ${{ env.uploadUrl }} - asset_path: ci/build/${{ env.packageName }}.zip - asset_name: ${{ env.packageName }}.zip - asset_content_type: application/zip \ No newline at end of file + name: ${{ env.artifact-name }}.zip + path: ci\build\${{ env.artifact-name }} + # Upload to release + - name: Upload Release + if: startsWith(github.ref, 'refs/tags/') + uses: svenstaro/upload-release-action@v1-release + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ci\build\${{ env.publish_name }}.dmg + asset_name: ${{ env.publish_name }}.dmg + tag: ${{ github.ref }} + overwrite: true \ No newline at end of file diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 407bb69..006eb7c 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -82,17 +82,18 @@ jobs: # tag 打包 - name: Package env: - publish_dir: ${{ env.target-name }}-${{ env.plantform-des }}-${{ matrix.msvc-arch }}-${{ steps.get-version.outputs.version }} + ENV_QT_PATH: ${{ env.qt-install-path }} + publish_name: ${{ env.target-name }}-${{ env.plantform-des }}-${{ matrix.msvc-arch }}-${{ steps.get-version.outputs.version }} run: | - cmd.exe /c ci\win\publish_for_win.bat ${{ matrix.msvc-arch }} ..\build\${{ env.publish_dir }} + cmd.exe /c ci\win\publish_for_win.bat ${{ matrix.msvc-arch }} ..\build\${{ env.publish_name }} # 打包zip - Compress-Archive -Path ci\build\${{ env.publish_dir }} ci\build\${{ env.publish_dir }}.zip - echo "::set-env name=artifact-name::${{ env.publish_dir }}" + Compress-Archive -Path ci\build\${{ env.publish_name }} ci\build\${{ env.publish_name }}.zip + echo "::set-env name=artifact-name::${{ env.publish_name }}" # 上传artifacts # https://help.github.com/en/actions/configuring-and-managing-workflows/persisting-workflow-data-using-artifacts - uses: actions/upload-artifact@v1 with: - name: ${{ env.artifact-name }} + name: ${{ env.artifact-name }}.zip path: ci\build\${{ env.artifact-name }} # Upload to release - name: Upload Release @@ -100,7 +101,7 @@ jobs: uses: svenstaro/upload-release-action@v1-release with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ci\build\${{ env.publish_dir }}.zip - asset_name: ${{ env.publish_dir }}.zip + file: ci\build\${{ env.publish_name }}.zip + asset_name: ${{ env.publish_name }}.zip tag: ${{ github.ref }} overwrite: true \ No newline at end of file diff --git a/ci/mac/build_for_mac.sh b/ci/mac/build_for_mac.sh index d71b28a..aa5990f 100755 --- a/ci/mac/build_for_mac.sh +++ b/ci/mac/build_for_mac.sh @@ -6,8 +6,9 @@ echo check ENV echo --------------------------------------------------------------- # 从环境变量获取必要参数 -# 例如 /Users/barry/Qt5.12.5/5.12.5/clang_64 -echo ENV_QT_CLANG $ENV_QT_CLANG +# 例如 /Users/barry/Qt5.12.5/5.12.5 +echo ENV_QT_PATH $ENV_QT_PATH +qt_clang_path=$ENV_QT_PATH/clang_64 # 获取绝对路径,保证其他目录执行此脚本依然正确 { @@ -39,7 +40,7 @@ fi echo current build mode: $build_mode # 环境变量设置 -export PATH=$ENV_QT_CLANG/bin:$PATH +export PATH=$qt_clang_path/bin:$PATH echo echo diff --git a/ci/mac/publish_for_mac.sh b/ci/mac/publish_for_mac.sh index e3d679d..deb4ef1 100755 --- a/ci/mac/publish_for_mac.sh +++ b/ci/mac/publish_for_mac.sh @@ -6,7 +6,8 @@ echo --------------------------------------------------------------- # 从环境变量获取必要参数 # 例如 /Users/barry/Qt5.12.5/5.12.5 -echo ENV_QT_CLANG $ENV_QT_CLANG +echo ENV_QT_PATH $ENV_QT_PATH +qt_clang_path=$ENV_QT_PATH/clang_64 # 获取绝对路径,保证其他目录执行此脚本依然正确 { @@ -31,7 +32,7 @@ keymap_path=$script_path/../../keymap publish_path=$script_path/$publish_dir release_path=$script_path/../../output/mac/release -export PATH=$ENV_QT_CLANG/bin:$PATH +export PATH=$qt_clang_path/bin:$PATH if [ -d "$publish_path" ]; then rm -rf $publish_path