ci: update release processes using Justfile, make reusable workflows have optional version param (#972)

This commit is contained in:
Kalvin C
2025-01-31 11:44:55 -08:00
committed by GitHub
parent a2bd5099be
commit 7c87a963c5
7 changed files with 89 additions and 48 deletions

View File

@@ -6,7 +6,8 @@ on:
workflow_call:
inputs:
version:
required: true
required: false
default: ""
type: string
# Let's allow overriding the OSes and architectures in JSON array form:
# e.g. '["ubuntu-latest","macos-latest"]'
@@ -42,6 +43,7 @@ jobs:
uses: actions/checkout@v4
- name: Update version in Cargo.toml
if: ${{ inputs.version != '' }}
run: |
sed -i.bak 's/^version = ".*"/version = "'${{ inputs.version }}'"/' Cargo.toml
rm -f Cargo.toml.bak
@@ -74,4 +76,4 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: goose-${{ matrix.architecture }}-${{ matrix.target-suffix }}
path: ${{ env.ARTIFACT }}
path: ${{ env.ARTIFACT }}

View File

@@ -8,7 +8,8 @@ on:
inputs:
version:
description: 'Version to set for the build'
required: true
required: false
default: ""
type: string
signing:
description: 'Whether to perform signing and notarization'
@@ -75,6 +76,7 @@ jobs:
# Update versions before build
- name: Update versions
if: ${{ inputs.version != '' }}
run: |
# Update version in Cargo.toml
sed -i.bak 's/^version = ".*"/version = "'${{ inputs.version }}'"/' Cargo.toml

View File

@@ -5,7 +5,7 @@
on:
push:
paths-ignore:
- 'documentation/**'
- "documentation/**"
branches:
- main
@@ -28,9 +28,10 @@ jobs:
- name: Generate a canary version
id: set-version
run: |
# TODO: fix this to be dynamic - extract version from repo
# Extract the version from Cargo.toml
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7)
VERSION="1.0.3-canary+${SHORT_SHA}"
VERSION=$(grep '^version\s*=' Cargo.toml | head -n 1 | cut -d\" -f2)
VERSION="${VERSION}-canary+${SHORT_SHA}"
echo "version=$VERSION" >> $GITHUB_OUTPUT
# ------------------------------------
@@ -48,7 +49,7 @@ jobs:
install-script:
name: Upload Install Script
runs-on: ubuntu-latest
needs: [ build-cli ]
needs: [build-cli]
steps:
- uses: actions/checkout@v4
- uses: actions/upload-artifact@v4
@@ -71,14 +72,14 @@ jobs:
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
# ------------------------------------
# 5) Create/Update GitHub Release
# ------------------------------------
release:
name: Release
runs-on: ubuntu-latest
needs: [ build-cli, install-script, bundle-desktop ]
needs: [build-cli, install-script, bundle-desktop]
permissions:
contents: write

View File

@@ -1,12 +1,12 @@
on:
push:
paths-ignore:
- 'documentation/**'
- "documentation/**"
branches:
- main
pull_request:
paths-ignore:
- 'documentation/**'
- "documentation/**"
branches:
- main
workflow_dispatch:
@@ -89,7 +89,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: 'lts/*'
node-version: "lts/*"
- name: Install Dependencies
run: npm ci
@@ -104,5 +104,4 @@ jobs:
uses: ./.github/workflows/bundle-desktop.yml
if: github.event_name == 'pull_request'
with:
version: 1.0.3 # TODO: fix this to be dynamic
signing: false

View File

@@ -43,7 +43,6 @@ jobs:
if: ${{ needs.trigger-on-command.outputs.continue == 'true' }}
uses: ./.github/workflows/bundle-desktop.yml
with:
version: 1.0.3 # TODO: fix this to be dynamic
signing: true
secrets:
CERTIFICATE_OSX_APPLICATION: ${{ secrets.CERTIFICATE_OSX_APPLICATION }}
@@ -71,11 +70,11 @@ jobs:
issue-number: ${{ needs.trigger-on-command.outputs.pr_number }}
body: |
### Desktop App for this PR
The following build is available for testing:
- [📱 macOS Desktop App (arm64, signed)](https://nightly.link/${{ github.repository }}/actions/runs/${{ github.run_id }}/Goose-darwin-arm64.zip)
After downloading, unzip the file and drag the Goose.app to your Applications folder. The app is signed and notarized for macOS.
This link is provided by nightly.link and will work even if you're not logged into GitHub.

View File

@@ -2,7 +2,7 @@
on:
push:
paths-ignore:
- 'documentation/**'
- "documentation/**"
tags:
- "v1.*"
@@ -13,31 +13,13 @@ concurrency:
jobs:
# ------------------------------------
# 1) Set version variables first
# ------------------------------------
prepare-version:
name: Prepare Version
runs-on: ubuntu-latest
outputs:
version: ${{ steps.set-version.outputs.version }}
steps:
- name: Extract version
id: set-version
run: |
VERSION=${GITHUB_REF#refs/tags/v}
echo "version=$VERSION" >> $GITHUB_OUTPUT
# ------------------------------------
# 3) Build CLI for multiple OS/Arch
# 1) Build CLI for multiple OS/Arch
# ------------------------------------
build-cli:
needs: [prepare-version]
uses: ./.github/workflows/build-cli.yml
with:
version: ${{ needs.prepare-version.outputs.version }}
# ------------------------------------
# 4) Upload Install CLI Script
# 2) Upload Install CLI Script
# ------------------------------------
install-script:
name: Upload Install Script
@@ -51,13 +33,11 @@ jobs:
path: download_cli.sh
# ------------------------------------------------------------
# 5) Bundle Desktop App (macOS only)
# 3) Bundle Desktop App (macOS only)
# ------------------------------------------------------------
bundle-desktop:
needs: [prepare-version]
uses: ./.github/workflows/bundle-desktop.yml
with:
version: ${{ needs.prepare-version.outputs.version }}
signing: true
secrets:
CERTIFICATE_OSX_APPLICATION: ${{ secrets.CERTIFICATE_OSX_APPLICATION }}
@@ -67,7 +47,7 @@ jobs:
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
# ------------------------------------
# 6) Create/Update GitHub Release
# 4) Create/Update GitHub Release
# ------------------------------------
release:
name: Release
@@ -80,7 +60,7 @@ jobs:
uses: actions/download-artifact@v4
with:
merge-multiple: true
# Create/update the versioned release
- name: Release versioned
uses: ncipollo/release-action@v1
@@ -108,4 +88,3 @@ jobs:
allowUpdates: true
omitBody: true
omitPrereleaseDuringUpdate: true