Skip to content

feat(ci): add CI/CD workflow for build validation and GCP deployment #1

feat(ci): add CI/CD workflow for build validation and GCP deployment

feat(ci): add CI/CD workflow for build validation and GCP deployment #1

Workflow file for this run

name: CI/CD
on:
push:
branches:
- main
- 'claude/**'
pull_request:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
permissions:
contents: write
pull-requests: read
id-token: write
jobs:
validate:
name: Build Validation
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Lint
run: pnpm run lint
- name: Type check
run: pnpm run typecheck
- name: Run tests
run: pnpm run test
- name: Build
run: pnpm run build
version-and-deploy:
name: Version Bump & Deploy to GCP
needs: validate
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Create Release Pull Request or Version
id: changesets
uses: changesets/action@v1
with:
version: pnpm run version
commit: 'chore: version packages'
title: 'chore: version packages'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Authenticate to Google Cloud
uses: google-github-actions/auth@v2
with:
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v2
- name: Configure Docker for GCP
run: gcloud auth configure-docker us-central1-docker.pkg.dev
- name: Deploy to GCP Production
run: pnpm run gcp:prod:deploy
env:
NODE_OPTIONS: --experimental-strip-types