name: MacOS on: push: paths: - 'QtScrcpy/**' - '!QtScrcpy/res/**' - '.github/workflows/**' pull_request: paths: - 'QtScrcpy/**' - '!QtScrcpy/res/**' jobs: build: name: Build runs-on: ${{ matrix.os }} strategy: matrix: os: [macos-latest] qt_ver: [5.12.6] qt_arch: [clang_64] env: targetName: QtScrcpy steps: - name: Cache Qt id: MacosCacheQt 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" - name: Install Qt if: steps.MacosCacheQt.outputs.cache-hit != 'true' uses: jurplel/install-qt-action@v2.0.0 with: version: ${{ matrix.qt_ver }} - uses: actions/checkout@v1 with: fetch-depth: 1 - name: Build MacOS 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 # tag 打包 - name: Package id: 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.app ci\build\${name}.zip # 记录环境变量packageName给后续step echo "::set-env name=packageName::$name" # 打印环境变量packageName Write-Host 'packageName:'${env:packageName} # 查询Release - name: Query Release if: startsWith(github.event.ref, 'refs/tags/') shell: pwsh env: githubFullName: ${{ github.event.repository.full_name }} ref: ${{ github.event.ref }} run: | [string]$tag = ${env:ref}.Substring(${env:ref}.LastIndexOf('/') + 1) [string]$url = 'https://api.github.com/repos/' + ${env:githubFullName} + '/releases/tags/' + ${tag} $response={} try { $response = Invoke-RestMethod -Uri $url -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 }} run: | [string]$tag = ${env:ref}.Substring(${env:ref}.LastIndexOf('/') + 1) [string]$url = 'https://api.github.com/repos/' + ${env:githubFullName} + '/releases/tags/' + ${tag} $response = Invoke-RestMethod -Uri $url -Method Get [string]$latestUpUrl = $response.upload_url Write-Host 'latestUpUrl:'$latestUpUrl echo "::set-env name=uploadUrl::$latestUpUrl" Write-Host 'env uploadUrl:'${env:uploadUrl} # 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 with: upload_url: ${{ env.uploadUrl }} asset_path: ci\build\${{ steps.package.env.packageName }}.zip asset_name: ${{ steps.package.env.packageName }}.zip asset_content_type: application/zip