Skip to content

Test improved CI pipeline #1

Test improved CI pipeline

Test improved CI pipeline #1

Workflow file for this run

name: App Builder
on:
push:
tags:
- 'v*'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RUST_TOOLCHAIN_VERSION: 1.93.0
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: write
jobs:
create-release:
permissions:
contents: write
runs-on: ubuntu-latest
outputs:
release_id: ${{ steps.create-release.outputs.result }}
steps:
- uses: actions/checkout@v4
- name: create release
id: create-release
uses: actions/github-script@v8
env:
TAG_NAME: ${{ github.ref_name }}
with:
script: |
const { data } = await github.rest.repos.createRelease({
owner: context.repo.owner,
repo: context.repo.repo,
tag_name: process.env.TAG_NAME,
name: `ETVR Firmware Flashing tool ${process.env.TAG_NAME}`,
draft: true,
generate_release_notes: true,
prerelease: false
})
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:
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ env.GITHUB_TOKEN }}
- name: Node.js setup (25.x)
uses: actions/setup-node@v4
with:
node-version: 25.x
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.RUST_TOOLCHAIN_VERSION }}
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 pkg-config libudev-dev javascriptcoregtk-4.1 libsoup-3.0 libwebkit2gtk-4.1-dev libssl-dev libgtk-3-dev librsvg2-dev webkit2gtk-4.0 patchelf libsoup2.4-dev libappindicator3-dev
npm install -g pnpm
npm install -g typescript
- name: install dependencies (windows only)
if: matrix.platform == 'windows-latest'
run: |
npm install -g typescript
npm install -g pnpm
- name: install dependencies (macos only)
if: matrix.platform == 'macos-latest'
run: |
brew install pnpm
- name: Install frontend dependencies (PNPM)
run: pnpm install --no-frozen-lockfile
- uses: tauri-apps/tauri-action@v0.6.1
id: tauri_build
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 }}
includeUpdaterJson: true
args: ${{ matrix.args }}
- name: Cleanup release after failure
if: ${{ failure() }}
env:
release_id: ${{ needs.create-release.outputs.release_id }}
uses: actions/github-script@v8
with:
script: |
await github.rest.repos.deleteRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: process.env.release_id,
})
publish-release:
permissions:
contents: write
runs-on: ubuntu-latest
needs: [ create-release, build-tauri ]
steps:
- name: publish release
id: publish-release
uses: actions/github-script@v8
env:
release_id: ${{ needs.create-release.outputs.release_id }}
TAG_NAME: ${{ github.ref_name }}
with:
script: |
const isPrerelease = process.env.TAG_NAME.includes('beta');
github.rest.repos.updateRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: process.env.release_id,
draft: false,
prerelease: isPrerelease,
})