Skip to content

Release

Release #97

Workflow file for this run

name: Release
on:
workflow_run:
workflows: ["CI"]
types: [completed]
branches: [main]
permissions:
contents: write
issues: write
pull-requests: write
jobs:
release-please:
name: "🚀 Release Please"
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
outputs:
release_created: ${{ steps.release.outputs['apps/cli--release_created'] }}
version: ${{ steps.release.outputs['apps/cli--version'] }}
tag_name: ${{ steps.release.outputs['apps/cli--tag_name'] }}
steps:
- name: "📥 Checkout"
uses: actions/checkout@v4
- name: "📋 Create Release PR"
uses: googleapis/release-please-action@v4
id: release
with:
token: ${{ secrets.GITHUB_TOKEN }}
config-file: .github/release-please-config.json
manifest-file: .github/.release-please-manifest.json
build:
name: "🏗️ Build CLI"
runs-on: ubuntu-latest
needs: release-please
if: ${{ needs.release-please.outputs.release_created == 'true' }}
steps:
- name: "📥 Checkout"
uses: actions/checkout@v4
with:
ref: ${{ needs.release-please.outputs.tag_name }}
- name: "🔧 Setup Bun"
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: "📦 Install Dependencies"
run: bun install
- name: "🏗️ Build CLI"
run: bun run build:cli
- name: "💾 Upload Build Artifact"
uses: actions/upload-artifact@v4
with:
name: cli-build
path: apps/cli
retention-days: 1
build-assets:
name: "📦 Pack & Upload Assets"
runs-on: ubuntu-latest
needs: [release-please, build]
if: ${{ needs.release-please.outputs.release_created == 'true' }}
steps:
- name: "📥 Download Build"
uses: actions/download-artifact@v4
with:
name: cli-build
path: apps/cli
- name: "🔧 Setup Bun"
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: "📦 Pack Distribution"
working-directory: apps/cli
run: bun pm pack --ignore-scripts --filename create-faster-${{ needs.release-please.outputs.version }}.tar.gz
- name: "📤 Upload to Release"
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.release-please.outputs.tag_name }}
files: apps/cli/create-faster-${{ needs.release-please.outputs.version }}.tar.gz
make_latest: true
generate_release_notes: true
publish-npm:
name: "📤 Publish to NPM"
runs-on: ubuntu-latest
needs: [release-please, build]
if: ${{ needs.release-please.outputs.release_created == 'true' }}
steps:
- name: "📥 Download Build"
uses: actions/download-artifact@v4
with:
name: cli-build
path: apps/cli
- name: "🔧 Setup Bun"
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: "📤 Publish to NPM"
working-directory: apps/cli
run: |
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > .npmrc
bun publish --access public
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}