Skip to content

Merge pull request #270 from alley-rs/0.1.X #43

Merge pull request #270 from alley-rs/0.1.X

Merge pull request #270 from alley-rs/0.1.X #43

Workflow file for this run

name: "nightly"
on:
push:
branches:
- main
jobs:
check-changed-paths:
runs-on: ubuntu-22.04
outputs:
changed: ${{ steps.changed-front.outputs.changed }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 100
- uses: marceloprado/[email protected]
id: changed-front
with:
paths: public src src-tauri static package.json .scripts .github
create-release:
needs: check-changed-paths
if: needs.check-changed-paths.outputs.changed == 'true'
permissions:
contents: write
runs-on: ubuntu-22.04
outputs:
release_id: ${{ steps.create-release.outputs.result }}
package_version: ${{ env.PACKAGE_VERSION }}
steps:
- uses: actions/checkout@v4
- name: setup node
uses: actions/setup-node@v4
with:
node-version: 20
- name: get version
run: echo "PACKAGE_VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_ENV
- name: check latest version
uses: actions/github-script@v7
id: latest-version
with:
script: |
const { data } = await github.request(
'GET /repos/{owner}/{repo}/releases/latest',
{
owner: context.repo.owner,
repo: context.repo.repo,
headers: {
'X-GitHub-Api-Version': '2022-11-28'
}
}
)
const latesVersion = data.tag_name.slice(1)
if (latesVersion === process.env.PACKAGE_VERSION) throw new Error("当前要发布的版本号与 latest 版本号相同")
return latesVersion
- name: get old nightly release id
run: |
release_id=$(curl -s 'https://api.github.com/repos/alley-rs/fluxy/releases/tags/nightly' | awk -F'[{},:]+' '/^ "id"/ {print $2}' | xargs)
echo "RELEASE_ID=$release_id" >> $GITHUB_ENV
# - name: delete old nightly release
# uses: actions/github-script@v7
# if: env.RELEASE_ID != ''
# with:
# script: |
# await github.rest.repos.deleteRelease({
# owner: context.repo.owner,
# repo: context.repo.repo,
# release_id: process.env.RELEASE_ID,
# })
- name: delete old nightly release
if: env.RELEASE_ID != ''
run: gh release delete nightly --cleanup-tag
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- 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: "nightly",
name: "Nightly build",
draft: true,
prerelease: true,
})
return data.id
build-tauri:
needs: create-release
permissions:
contents: write
strategy:
fail-fast: false
matrix:
include:
- platform: "macos-latest"
args: "--target aarch64-apple-darwin"
- platform: "macos-latest"
args: "--target x86_64-apple-darwin"
- platform: "ubuntu-22.04"
args: ""
- platform: "windows-latest"
args: ""
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- name: setup node
uses: actions/setup-node@v4
with:
node-version: 20
- uses: oven-sh/setup-bun@v1
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
- name: install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf
- name: install frontend dependencies
run: bun run install:all
- uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
with:
releaseId: ${{ needs.create-release.outputs.release_id }}
releaseBody: ${{ needs.create-release.outputs.changelog }}
updaterJsonPreferNsis: true
args: ${{ matrix.args }}
publish-release:
permissions:
contents: write
runs-on: ubuntu-22.04
needs: [create-release, build-tauri]
steps:
- name: publish release
id: publish-release
uses: actions/github-script@v7
env:
release_id: ${{ needs.create-release.outputs.release_id }}
PACKAGE_VERSION: ${{ needs.create-release.outputs.package_version }}
LAST_COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
with:
script: |
github.rest.repos.updateRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: parseInt(process.env.release_id),
body: `> [!WARNING]\n> 每夜版可能无法自动升级。/The nightly version may not auto-update.\n\n## Last Commit\n\n${process.env.LAST_COMMIT_MESSAGE}`,
draft: false
})