From 3ec74174905a77f8258d8dc446791279fbf2ff9a Mon Sep 17 00:00:00 2001 From: lanyeeee <1210347077@qq.com> Date: Thu, 12 Dec 2024 20:53:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=85=8D=E7=BD=AEgithub=20action?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=A4=9A=E5=B9=B3=E5=8F=B0=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=89=93=E5=8C=85=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/publish.yml | 223 ++++++++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..01ed8f7 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,223 @@ +name: "publish" + +on: + push: + tags: + - "v*" + +env: + REPO_NAME: bilibili-manga-watermark-remover + +jobs: + get-version: + runs-on: ubuntu-latest + outputs: + VERSION: ${{ steps.get_version.outputs.VERSION }} + steps: + - uses: actions/checkout@v4 + + - name: Get version number + id: get_version + run: | + VERSION=$(jq -r '.version' src-tauri/tauri.conf.json) + echo "VERSION=$VERSION" >> $GITHUB_OUTPUT + + windows-build: + needs: get-version + env: + VERSION: ${{ needs.get-version.outputs.VERSION }} + outputs: + VERSION: ${{ env.VERSION }} + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: lts/* + + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + run_install: false + + - name: Install frontend dependencies + run: pnpm install + + - name: Build tauri app + uses: tauri-apps/tauri-action@v0 + + - name: Create artifacts directory + run: mkdir -p artifacts + + - name: Copy nsis to release assets + run: cp src-tauri/target/release/bundle/nsis/${{ env.REPO_NAME }}_${{ env.VERSION }}_x64-setup.exe artifacts/${{ env.REPO_NAME }}_${{ env.VERSION }}_windows_x64.exe + + - name: Zip portable to release assets + run: | + cd src-tauri/target/release + 7z a -tzip ../../../artifacts/${{ env.REPO_NAME }}_${{ env.VERSION }}_windows_x64_portable.zip ${{ env.REPO_NAME }}.exe + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: windows-assets + path: artifacts/* + + linux-build: + needs: get-version + env: + VERSION: ${{ needs.get-version.outputs.VERSION }} + outputs: + VERSION: ${{ env.VERSION }} + runs-on: ubuntu-24.04 + steps: + - name: install dependencies + run: | + sudo apt-get update + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf + - uses: actions/checkout@v4 + + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: lts/* + + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + run_install: false + + - name: Install frontend dependencies + run: pnpm install + + - name: Build tauri app + uses: tauri-apps/tauri-action@v0 + + - name: Create artifacts directory + run: mkdir -p artifacts + + - name: Copy deb to release assets + run: cp src-tauri/target/release/bundle/deb/${{ env.REPO_NAME }}_${{ env.VERSION }}_amd64.deb artifacts/${{ env.REPO_NAME }}_${{ env.VERSION }}_linux_amd64.deb + + - name: Copy rpm to release assets + run: cp src-tauri/target/release/bundle/rpm/${{ env.REPO_NAME }}-${{ env.VERSION }}-1.x86_64.rpm artifacts/${{ env.REPO_NAME }}_${{ env.VERSION }}_linux_amd64.rpm + + - name: Zip portable to release assets + run: | + cd src-tauri/target/release + tar -czf ../../../artifacts/${{ env.REPO_NAME }}_${{ env.VERSION }}_linux_amd64_portable.tar.gz ${{ env.REPO_NAME }} + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: linux-assets + path: artifacts/* + + macos-build: + needs: get-version + env: + VERSION: ${{ needs.get-version.outputs.VERSION }} + outputs: + VERSION: ${{ env.VERSION }} + strategy: + fail-fast: false + matrix: + arch: [ aarch64, x86_64 ] + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: lts/* + + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.arch }}-apple-darwin + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + run_install: false + + - name: Install frontend dependencies + run: pnpm install + + - name: Build tauri app + uses: tauri-apps/tauri-action@v0 + with: + args: --target ${{ matrix.arch }}-apple-darwin + + - name: Create artifacts directory + run: mkdir -p artifacts + + - name: Copy dmg to release assets + env: + ARCH_ALIAS: ${{ matrix.arch == 'x86_64' && 'x64' || matrix.arch }} + run: cp src-tauri/target/${{ matrix.arch }}-apple-darwin/release/bundle/dmg/${{ env.REPO_NAME }}_${{ env.VERSION }}_${{ env.ARCH_ALIAS }}.dmg artifacts/${{ env.REPO_NAME }}_${{ env.VERSION }}_macos_${{ matrix.arch }}.dmg + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: macos-assets-${{ matrix.arch }} + path: artifacts/* + + create-release: + needs: [ windows-build, linux-build, macos-build ] + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Download Windows assets + uses: actions/download-artifact@v4 + with: + name: windows-assets + path: artifacts/windows + + - name: Download Linux assets + uses: actions/download-artifact@v4 + with: + name: linux-assets + path: artifacts/linux + + - name: Download macOS aarch64 assets + uses: actions/download-artifact@v4 + with: + name: macos-assets-aarch64 + path: artifacts/macos-aarch64 + + - name: Download macOS x86_64 assets + uses: actions/download-artifact@v4 + with: + name: macos-assets-x86_64 + path: artifacts/macos-x86_64 + + - name: List files in artifacts directory + run: ls -R artifacts + + - name: Create GitHub Release + id: create_release + uses: softprops/action-gh-release@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + name: Desktop App v${{ needs.windows-build.outputs.VERSION }} + body: | + Take a look at the assets to download and install this app. + files: | + artifacts/windows/* + artifacts/linux/* + artifacts/macos-aarch64/* + artifacts/macos-x86_64/* + draft: true + prerelease: false \ No newline at end of file