Release #39
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| workflow_dispatch: | |
| inputs: | |
| release_type: | |
| description: Release type | |
| required: true | |
| default: pre-release | |
| type: choice | |
| options: | |
| - pre-release | |
| - release | |
| release_tag: | |
| description: Tag for a formal release, for example v3.0.0 | |
| required: false | |
| jobs: | |
| prepare: | |
| permissions: | |
| contents: write | |
| runs-on: ubuntu-latest | |
| outputs: | |
| tag_name: ${{ steps.release.outputs.tag_name }} | |
| prerelease: ${{ steps.release.outputs.prerelease }} | |
| release_name: ${{ steps.release.outputs.release_name }} | |
| release_body: ${{ steps.release.outputs.release_body }} | |
| steps: | |
| - name: Calculate release metadata | |
| id: release | |
| shell: bash | |
| env: | |
| EVENT_NAME: ${{ github.event_name }} | |
| REF_NAME: ${{ github.ref_name }} | |
| RELEASE_TYPE: ${{ inputs.release_type }} | |
| RELEASE_TAG: ${{ inputs.release_tag }} | |
| run: | | |
| if [ "$EVENT_NAME" = "workflow_dispatch" ] && [ "$RELEASE_TYPE" = "pre-release" ]; then | |
| echo "tag_name=dev-build" >> "$GITHUB_OUTPUT" | |
| echo "prerelease=true" >> "$GITHUB_OUTPUT" | |
| echo "release_name=QuickOutline pre-release" >> "$GITHUB_OUTPUT" | |
| echo "release_body=Latest pre-release build. This release is replaced by each pre-release workflow run." >> "$GITHUB_OUTPUT" | |
| elif [ "$EVENT_NAME" = "workflow_dispatch" ]; then | |
| if [ -z "$RELEASE_TAG" ]; then | |
| echo "::error::release_tag is required for a formal release." | |
| exit 1 | |
| fi | |
| echo "tag_name=$RELEASE_TAG" >> "$GITHUB_OUTPUT" | |
| echo "prerelease=false" >> "$GITHUB_OUTPUT" | |
| echo "release_name=QuickOutline v__VERSION__" >> "$GITHUB_OUTPUT" | |
| echo "release_body=See the assets to download this version and install." >> "$GITHUB_OUTPUT" | |
| else | |
| echo "tag_name=$REF_NAME" >> "$GITHUB_OUTPUT" | |
| echo "prerelease=false" >> "$GITHUB_OUTPUT" | |
| echo "release_name=QuickOutline v__VERSION__" >> "$GITHUB_OUTPUT" | |
| echo "release_body=See the assets to download this version and install." >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Reset pre-release | |
| if: steps.release.outputs.prerelease == 'true' | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| GH_REPO: ${{ github.repository }} | |
| run: | | |
| gh release delete "${{ steps.release.outputs.tag_name }}" --cleanup-tag --yes || true | |
| gh release create "${{ steps.release.outputs.tag_name }}" \ | |
| --target "$GITHUB_SHA" \ | |
| --prerelease \ | |
| --title "${{ steps.release.outputs.release_name }}" \ | |
| --notes "${{ steps.release.outputs.release_body }}" | |
| release: | |
| needs: prepare | |
| permissions: | |
| contents: write | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| platform: [macos-latest, ubuntu-22.04, windows-latest] | |
| runs-on: ${{ matrix.platform }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: setup bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: 1.3.13 | |
| - name: setup rust | |
| 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.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} | |
| - name: rust cache | |
| uses: swatinem/rust-cache@v2 | |
| with: | |
| workspaces: './src-tauri -> target' | |
| - name: install dependencies (ubuntu only) | |
| if: matrix.platform == 'ubuntu-22.04' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev patchelf | |
| - name: install frontend dependencies | |
| run: bun install --frozen-lockfile | |
| - name: build tauri | |
| uses: tauri-apps/tauri-action@v0 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| args: --verbose -- --verbose | |
| tagName: ${{ needs.prepare.outputs.tag_name }} | |
| releaseName: ${{ needs.prepare.outputs.release_name }} | |
| releaseBody: ${{ needs.prepare.outputs.release_body }} | |
| releaseDraft: false | |
| prerelease: ${{ needs.prepare.outputs.prerelease }} |