From 69ef7f5ccea8ac1ce18eea329628ab95bd4caffc Mon Sep 17 00:00:00 2001 From: Kevin Yue Date: Wed, 22 Jan 2025 21:54:16 +0800 Subject: [PATCH] ci: upload offline tarball --- .github/workflows/build.yaml | 42 ++++++++++++++++++++++++++++++++++ .github/workflows/publish.yaml | 33 ++++++++++++++------------ .github/workflows/release.yaml | 17 +++++++------- scripts/gh-release.sh | 4 ++-- 4 files changed, 71 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 36499aaf..9eb19a74 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -68,6 +68,47 @@ jobs: path: | source/gp/.build/tarball/*.tar.gz + tarball-offline: + if: ${{ github.ref == 'refs/heads/dev' || startsWith(github.ref, 'refs/tags/') }} + runs-on: ubuntu-latest + needs: + - tarball + steps: + - uses: pnpm/action-setup@v4 + with: + version: 9 + + - name: Prepare workspace + run: rm -rf source-offline && mkdir source-offline + + - name: Download tarball + uses: actions/download-artifact@v4 + with: + name: artifact-source + path: source-offline + + - name: Create offline tarball + run: | + cd source-offline + + offline_tarball=$(basename *.tar.gz .tar.gz).offline.tar.gz + + # Extract the tarball + tar -xzf *.tar.gz + + cd */ + make tarball OFFLINE=1 + + # Rename the tarball to .offline.tar.gz + mv -v .build/tarball/*.tar.gz ../$offline_tarball + + - name: Upload offline tarball + uses: actions/upload-artifact@v4 + with: + path: source-offline/*.offline.tar.gz + name: artifact-source-offline + if-no-files-found: error + build-gp: needs: - setup-matrix @@ -168,6 +209,7 @@ jobs: runs-on: ubuntu-latest needs: - tarball + - tarball-offline - build-gp - build-gpgui diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index add284ec..2f761cec 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -52,22 +52,26 @@ jobs: version: 9 - name: Prepare workspace run: rm -rf publish-ppa && mkdir publish-ppa - - name: Download ${{ inputs.tag }} source code - uses: robinraju/release-downloader@v1.9 - with: - token: ${{ secrets.GH_PAT }} - tag: ${{ inputs.tag }} - fileName: globalprotect-openconnect-*.tar.gz - tarBall: false - zipBall: false - out-file-path: publish-ppa - - name: Make the offline tarball + - name: Download ${{ inputs.tag }} offline source code + env: + GH_TOKEN: ${{ secrets.GH_PAT }} + run: | + gh -R yuezk/GlobalProtect-openconnect \ + release download ${{ inputs.tag }} \ + --pattern '*.offline.tar.gz' \ + --dir publish-ppa + - name: Patch the source code run: | cd publish-ppa - tar -xf globalprotect-openconnect-*.tar.gz - cd globalprotect-openconnect-*/ - make tarball OFFLINE=1 + # Rename the source tarball without the offline suffix + mv -v *.tar.gz $(basename *.tar.gz .offline.tar.gz).tar.gz + + # Extract the source tarball + tar -xzf *.tar.gz + + # Prepare the debian directory with custom files + cd globalprotect-openconnect-*/ # Prepare the debian directory with custom files mkdir -p .build/debian @@ -78,7 +82,6 @@ jobs: cp -v packaging/deb/postrm .build/debian/postrm sed -i "s/@RUST@/cargo-1.80/g" .build/debian/control - sed -i "s/@OFFLINE@/1/g" .build/debian/rules sed -i "s/@BUILD_GUI@/1/g" .build/debian/rules sed -i "s/@RUST_VERSION@/1.80/g" .build/debian/rules @@ -89,7 +92,7 @@ jobs: repository: "yuezk/globalprotect-openconnect" gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }} gpg_passphrase: ${{ secrets.PPA_GPG_PASSPHRASE }} - tarball: publish-ppa/globalprotect-openconnect-*/.build/tarball/*.tar.gz + tarball: publish-ppa/globalprotect-openconnect-*.tar.gz debian_dir: publish-ppa/globalprotect-openconnect-*/.build/debian deb_email: "k3vinyue@gmail.com" deb_fullname: "Kevin Yue" diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ddf72d76..665a455e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -96,15 +96,16 @@ jobs: steps: - name: Prepare workspace run: rm -rf build-${{ matrix.package }} && mkdir -p build-${{ matrix.package }} + - name: Download ${{ inputs.tag }} source code - uses: robinraju/release-downloader@v1.9 - with: - token: ${{ secrets.GH_PAT }} - tag: ${{ inputs.tag }} - fileName: globalprotect-openconnect-*.tar.gz - tarBall: false - zipBall: false - out-file-path: build-${{ matrix.package }} + env: + GH_TOKEN: ${{ secrets.GH_PAT }} + run: | + gh -R yuezk/GlobalProtect-openconnect \ + release download ${{ inputs.tag }} \ + --pattern '*[^offline].tar.gz' \ + --dir build-${{ matrix.package }} + - name: Docker Login run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin - name: Build ${{ matrix.package }} package in Docker diff --git a/scripts/gh-release.sh b/scripts/gh-release.sh index a862062e..6178dff3 100755 --- a/scripts/gh-release.sh +++ b/scripts/gh-release.sh @@ -28,7 +28,7 @@ release_snapshot() { echo "Uploading new assets..." gh -R "$REPO" release upload "$TAG" \ - "$PROJECT_DIR"/.build/artifacts/artifact-source/* \ + "$PROJECT_DIR"/.build/artifacts/artifact-source*/* \ "$PROJECT_DIR"/.build/artifacts/artifact-gpgui-*/* } @@ -40,7 +40,7 @@ release_tag() { gh -R "$REPO" release create $TAG \ --title "$TAG" \ --notes "$RELEASE_NOTES" \ - "$PROJECT_DIR"/.build/artifacts/artifact-source/* \ + "$PROJECT_DIR"/.build/artifacts/artifact-source*/* \ "$PROJECT_DIR"/.build/artifacts/artifact-gpgui-*/* }