Skip to content

fix: remove extra blank line in generated api-contract #22

fix: remove extra blank line in generated api-contract

fix: remove extra blank line in generated api-contract #22

Workflow file for this run

name: CI
on:
push:
branches: [main]
paths-ignore:
- "**.md"
- "docs/**"
- ".changeset/**"
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
name: Lint and Format Check
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Cache dependencies
uses: actions/cache@v5
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Security audit
run: bun audit || true
- name: Run Biome lint check
run: bun lint
- name: Run Biome format check
run: bun format:check
typecheck:
name: Type Check
runs-on: ubuntu-latest
needs: [lint]
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Cache dependencies
uses: actions/cache@v5
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Build workspace packages
run: |
bun run --cwd packages/every-plugin build || true
bun run --cwd packages/everything-dev build || true
- name: Run typecheck
run: bun typecheck
integration-tests:
name: Integration Tests
runs-on: ubuntu-latest
needs: [lint, typecheck]
timeout-minutes: 30
env:
API_DATABASE_URL: file:./api-test.db
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Cache dependencies
uses: actions/cache@v5
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Build workspace packages
run: bun run --cwd packages/every-plugin build || true
- name: Run database migrations
run: bun run db:migrate
working-directory: ./api
- name: Run integration tests
run: bun test
working-directory: ./api
- name: Upload test artifacts
if: failure()
uses: actions/upload-artifact@v4
with:
name: test-failures
path: api/coverage/
retention-days: 7
build-docker:
name: Build and Push Docker Image
runs-on: ubuntu-latest
needs: [lint, typecheck, integration-tests]
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
environment: production
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Lowercase repository name
run: echo "REPO=$(echo '${{ github.repository }}' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ env.REPO }}
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=ref,event=branch
type=sha
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Deployment summary
run: |
echo "## 🚀 Docker Deployment Complete" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Image:** \`ghcr.io/${{ env.REPO }}:${{ steps.meta.outputs.version }}\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Platforms:** linux/amd64" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Rollback:** Use Railway dashboard or GitHub Container Registry" >> $GITHUB_STEP_SUMMARY
- name: Comment deployment URL
if: github.event_name == 'workflow_dispatch'
uses: actions/github-script@v7
with:
script: |
github.rest.repos.createCommitComment({
owner: context.repo.owner,
repo: context.repo.repo,
commit_sha: context.sha,
body: '🚀 Docker image deployed!\n\nImage: `ghcr.io/${{ env.REPO }}:${{ steps.meta.outputs.version }}`\n\nView on Railway: [Dashboard](https://railway.app)'
})