From 4f013e58b52a059e31b7486ff5669ae8994b3890 Mon Sep 17 00:00:00 2001 From: rankun Date: Fri, 13 Mar 2020 16:46:34 +0800 Subject: [PATCH] feat: mac package dmg --- .github/workflows/macos.yml | 17 +++++++-- .github/workflows/windows.yml | 10 +++++- ci/mac/package/dmg-background.jpg | Bin 0 -> 41945 bytes ci/mac/package/package.py | 55 ++++++++++++++++++++++++++++++ ci/mac/package/requirements.txt | 1 + ci/mac/package_for_mac.sh | 37 ++++++++++++++++++++ 6 files changed, 117 insertions(+), 3 deletions(-) create mode 100644 ci/mac/package/dmg-background.jpg create mode 100644 ci/mac/package/package.py create mode 100644 ci/mac/package/requirements.txt create mode 100755 ci/mac/package_for_mac.sh diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index c5d3e60..84fe4fa 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -46,15 +46,18 @@ jobs: - 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 + ci/mac/package_for_mac.sh # tag 打包 - name: Package if: startsWith(github.event.ref, 'refs/tags/') @@ -65,7 +68,7 @@ jobs: [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 + Compress-Archive -Path ci\build\QtScrcpy.dmg ci\build\${name}.zip # 查询Release - name: Query Release if: startsWith(github.event.ref, 'refs/tags/') @@ -73,12 +76,20 @@ jobs: 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=("barry-ran {0}" -f $authInfo)} + $response={} try { - $response = Invoke-RestMethod -Uri $url -Method Get + $response = Invoke-RestMethod -Uri $url -Headers $headers -Method Get } catch { Write-Host "StatusCode:" $_.Exception.Response.StatusCode.value__ Write-Host "StatusDescription:" $_.Exception.Response.StatusDescription @@ -102,12 +113,14 @@ jobs: 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=("barry-ran {0}" -f $authInfo)} + $response = Invoke-RestMethod -Uri $url -ContentType 'text/json' -Headers $headers -Method Get [string]$latestUpUrl = $response.upload_url Write-Host 'latestUpUrl:'$latestUpUrl diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 2b40ad2..6b58178 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -103,12 +103,20 @@ jobs: 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=("barry-ran {0}" -f $authInfo)} + $response={} try { - $response = Invoke-RestMethod -Uri $url -Method Get + $response = Invoke-RestMethod -Uri $url -Headers $headers -Method Get } catch { Write-Host "StatusCode:" $_.Exception.Response.StatusCode.value__ Write-Host "StatusDescription:" $_.Exception.Response.StatusDescription diff --git a/ci/mac/package/dmg-background.jpg b/ci/mac/package/dmg-background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..84c50745d2046724bb729311ce182bb05f0e98db GIT binary patch literal 41945 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 /dev/null # disable output +# 设置当前目录,cd的目录影响接下来执行程序的工作目录 +old_cd=$(pwd) +cd $(dirname "$0") + +echo +echo +echo --------------------------------------------------------------- +echo pip install requirements +echo --------------------------------------------------------------- + +pip install -r $script_path/package/requirements.txt +if [ $? -ne 0 ] ;then + echo "pip install requirements failed" + exit 1 +fi + +echo +echo +echo --------------------------------------------------------------- +echo create package +echo --------------------------------------------------------------- + +python $script_path/package/package.py +if [ $? -ne 0 ] ;then + echo "create package failed" + exit 1 +fi + +# 恢复当前目录 +cd $old_cd +exit 0