diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 8a9df05..6f442fb 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -69,17 +69,78 @@ jobs: [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)} + Write-Host 'headers:'$headers + $response = Invoke-RestMethod -Uri $url -ContentType 'text/json' -Headers $headers -Method Get + 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 }} - - name: Release - id: release - uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') + 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 with: - files: ci/build/${{ env.packageName }}.zip - \ No newline at end of file + 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