chore: automated docs generation for release #128
This file contains 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: "Semantic release" | |
on: | |
push: | |
branches: | |
- main | |
- beta | |
workflow_dispatch: | |
concurrency: | |
group: release-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
name: Test, lint, & build | |
uses: ./.github/workflows/test.yaml | |
release: | |
outputs: | |
release-tag: ${{ steps.semantic-release.outputs.release-tag }} | |
name: Semantic release | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- name: Generate token | |
id: generate_token | |
uses: tibdex/github-app-token@v2 | |
with: | |
app_id: ${{ secrets.OS_GITHUB_APP_ID }} | |
private_key: ${{ secrets.OS_GITHUB_APP_PRIVATE_KEY }} | |
- name: "☁️ checkout repository" | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
token: ${{ steps.generate_token.outputs.token }} | |
- name: "🔧 setup node" | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: "npm" | |
cache-dependency-path: "./npm/package-lock.json" | |
- name: "🔧 install npm@latest" | |
run: npm i -g npm@latest | |
- name: "🚀 release" | |
id: semantic-release | |
uses: open-sauced/release@v2 | |
env: | |
# This ensures that publishing happens on every single trigger which then | |
# forces the go binaries to be built in the next step and attached to the GitHub release | |
FORCE_PUBLISH: "patch" | |
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
NPM_PACKAGE_ROOT: "npm" | |
SKIP_DOCKER_PUBLISH: true | |
docs: | |
name: Update documentation | |
needs: | |
- release | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Generate token" | |
id: generate_token | |
uses: tibdex/github-app-token@v2 | |
with: | |
app_id: ${{ secrets.OS_GITHUB_APP_ID }} | |
private_key: ${{ secrets.OS_GITHUB_APP_PRIVATE_KEY }} | |
- name: "☁️ checkout repository" | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
token: ${{ steps.generate_token.outputs.token }} | |
- name: "🐹 Setup Go" | |
uses: actions/setup-go@v5 | |
with: | |
go-version: 1.22.x | |
- name: "🤲 Setup Just" | |
uses: extractions/setup-just@v2 | |
- name: "📗 Generate Documentation" | |
run: ./scripts/generate-docs.sh | |
env: | |
GITHUB_REF: ${{ github.ref }} | |
GH_TOKEN: ${{ steps.generate_token.outputs.token }} | |
build: | |
name: Build and publish artifacts | |
needs: | |
- release | |
- docs | |
if: needs.release.outputs.release-tag != '' | |
runs-on: ubuntu-latest | |
permissions: | |
# release changes require contents write so that it can push Go binaries | |
contents: write | |
strategy: | |
matrix: | |
goos: [darwin, linux, windows] | |
goarch: [amd64, arm64] | |
steps: | |
- name: "☁️ checkout repository" | |
uses: actions/checkout@v4 | |
- name: "🐹 Setup Go" | |
uses: actions/setup-go@v5 | |
with: | |
go-version: 1.22.x | |
- name: "🤲 Setup Just" | |
uses: extractions/setup-just@v2 | |
- name: "🔧 Build all and upload artifacts to release" | |
env: | |
GH_TOKEN: ${{ github.token }} | |
run: | | |
export RELEASE_TAG_VERSION=${{ needs.release.outputs.release-tag }} | |
just build-${{ matrix.goos }}-${{ matrix.goarch }} | |
gh release upload ${{ needs.release.outputs.release-tag }} build/pizza-${{ matrix.goos }}-${{ matrix.goarch }} | |
docker: | |
name: Build and push container | |
needs: | |
- release | |
if: needs.release.outputs.release-tag != '' | |
runs-on: ubuntu-latest | |
steps: | |
- name: "☁️ checkout repository" | |
uses: actions/checkout@v4 | |
- name: "🔧 setup buildx" | |
uses: docker/setup-buildx-action@v3 | |
- name: "🐳 Login to ghcr" | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: "📦 docker build and push" | |
uses: docker/build-push-action@v6 | |
with: | |
tags: ghcr.io/${{ github.repository }}:latest,ghcr.io/${{ github.repository }}:${{ needs.release.outputs.release-tag }} | |
push: true | |
build-args: | | |
VERSION=${{ needs.release.outputs.release-tag }} | |
POSTHOG_PUBLIC_API_KEY=${{ vars.POSTHOG_WRITE_PUBLIC_KEY }} |