mirror of
https://github.com/VirtualHotBar/NetMount.git
synced 2026-05-17 11:46:37 +08:00
182 lines
5.9 KiB
YAML
182 lines
5.9 KiB
YAML
name: "Publish Release"
|
|
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
|
|
# `tauri-action` can also upload app bundles to an existing GitHub release.
|
|
# This workflow uses different actions to create and publish the release.
|
|
# `tauri-action` will only build and upload the app bundles to the specified release.
|
|
|
|
jobs:
|
|
create-release:
|
|
permissions:
|
|
contents: write
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
release_id: ${{ steps.create-release.outputs.result }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: setup node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: lts/*
|
|
|
|
- name: get version
|
|
run: |
|
|
PACKAGE_VERSION=$(node -p "require('./package.json').version")
|
|
#sed -i "s/^version = \".*\"/version = \"$PACKAGE_VERSION\"/" src-tauri/Cargo.toml
|
|
echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> $GITHUB_ENV
|
|
|
|
|
|
- name: create release
|
|
id: create-release
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const { data } = await github.rest.repos.createRelease({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
tag_name: `v${process.env.PACKAGE_VERSION}`,
|
|
name: `NetMonut v${process.env.PACKAGE_VERSION}`,
|
|
body: 'Take a look at the assets to download and install this app.',
|
|
draft: true,
|
|
prerelease: false
|
|
})
|
|
return data.id
|
|
|
|
build-tauri:
|
|
needs: [create-release, generate-changelog]
|
|
permissions:
|
|
contents: write
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
settings:
|
|
- platform: "macos-latest" # for Arm based macs (M1 and above).
|
|
args: "--target aarch64-apple-darwin"
|
|
- platform: "macos-latest" # for Intel based macs.
|
|
args: "--target x86_64-apple-darwin"
|
|
- platform: "ubuntu-22.04" # for Tauri v1 you could replace this with ubuntu-20.04.
|
|
args: ""
|
|
- platform: "windows-latest"
|
|
args: ""
|
|
|
|
runs-on: ${{ matrix.settings.platform }}
|
|
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:
|
|
# Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds.
|
|
targets: ${{ matrix.settings.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
|
|
|
|
- name: install dependencies (windows only)
|
|
if: matrix.settings.platform == 'windows-latest'
|
|
run: |
|
|
#winget install 7z -h --accept-package-agreements --accept-source-agreements
|
|
|
|
|
|
- name: install dependencies (macos only)
|
|
if: matrix.settings.platform == 'macos-latest'
|
|
run: |
|
|
#/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
#brew install p7zip
|
|
|
|
- name: install dependencies (ubuntu only)
|
|
if: matrix.settings.platform == 'ubuntu-22.04'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
|
|
# webkitgtk 4.0 is for Tauri v1 - webkitgtk 4.1 is for Tauri v2.
|
|
# You can remove the one that doesn't apply to your app to speed up the workflow a bit.
|
|
|
|
- name: Install pnpm
|
|
run: npm install -g pnpm
|
|
|
|
- name: Cache pnpm modules
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.pnpm-store
|
|
node_modules
|
|
key: pnpm-${{ matrix.settings.platform}}-${{ matrix.settings.args }}-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
restore-keys: |
|
|
pnpm-${{ matrix.settings.platform}}-${{ matrix.settings.args }}-
|
|
|
|
- name: install frontend dependencies
|
|
run: pnpm install
|
|
|
|
- name: Cache Cargo registry and target
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
src-tauri/target
|
|
key: cargo-${{ matrix.settings.platform }}-${{ matrix.settings.args }}-${{ hashFiles('**/src-tauri/Cargo.lock') }}
|
|
restore-keys: |
|
|
cargo-${{ matrix.settings.platform }}-${{ matrix.settings.args }}-
|
|
|
|
- uses: tauri-apps/tauri-action@v0
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
releaseId: ${{ needs.create-release.outputs.release_id }}
|
|
args: ${{ matrix.settings.args }}
|
|
|
|
|
|
generate-changelog:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
changelog: ${{ steps.generate-changelog.outputs.changelog }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Generate Changelog
|
|
id: generate-changelog
|
|
uses: TriPSs/conventional-changelog-action@v5
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
output-file: false
|
|
skip-git-pull: true
|
|
|
|
|
|
|
|
publish-release:
|
|
runs-on: ubuntu-latest
|
|
needs: [create-release, build-tauri, generate-changelog]
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- name: publish release
|
|
uses: actions/github-script@v7
|
|
env:
|
|
release_id: ${{ needs.create-release.outputs.release_id }}
|
|
changelog: ${{ needs.generate-changelog.outputs.changelog }}
|
|
with:
|
|
script: |
|
|
const changelog = process.env.changelog
|
|
const { pull_request } = context.payload;
|
|
|
|
// Check if the event payload contains a pull request
|
|
let prBody = '';
|
|
if (pull_request) {
|
|
prBody = pull_request.body || '';
|
|
}
|
|
|
|
github.rest.repos.updateRelease({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
release_id: process.env.release_id,
|
|
draft: false,
|
|
prerelease: false,
|
|
body: `${changelog}\n\n${prBody}`
|
|
}) |