Skip to content

Commit

Permalink
Merge pull request #52 from lanyeeee/feature/multi-platform-packge
Browse files Browse the repository at this point in the history
feat: 配置github action实现多平台自动打包发布
  • Loading branch information
lanyeeee authored Dec 12, 2024
2 parents 9bfc1e4 + 3ec7417 commit e06ad59
Showing 1 changed file with 223 additions and 0 deletions.
223 changes: 223 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit e06ad59

Please # to comment.