Build source code and send to Capgo #168
Workflow file for this run
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: Build source code and send to Capgo | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
push: | |
tags: | |
- '*' | |
jobs: | |
supabase_deploy: | |
runs-on: ubuntu-latest | |
name: "Build code and deploy to Supabase" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup bun | |
uses: oven-sh/setup-bun@v1 | |
with: | |
bun-version: latest | |
- name: Set environment variable | |
run: | | |
if [[ ${{ github.ref }} == *-alpha* ]]; then | |
echo "ENV=alpha" >> $GITHUB_ENV | |
else | |
echo "ENV=prod" >> $GITHUB_ENV | |
fi | |
- name: Set Supabase credentials | |
run: | | |
echo "SUPABASE_DB_PASSWORD=${{ secrets[format('SUPABASE_DB_PASS_{0}', env.ENV)] }}" >> $GITHUB_ENV | |
echo "SUPABASE_PROJECT_ID=${{ secrets[format('SUPABASE_PROJECT_ID_{0}', env.ENV)] }}" >> $GITHUB_ENV | |
- name: Install dependencies | |
run: bun install | |
- name: Lint | |
run: bun lint && bun lint-backend | |
- name: Install Supabase CLI | |
uses: supabase/setup-cli@v1 | |
with: | |
version: latest | |
- name: Prepare Supabase | |
run: supabase link --project-ref ${{ env.SUPABASE_PROJECT_ID }} | |
env: | |
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_TOKEN }} | |
- name: Wait for tests to succeed | |
uses: lewagon/[email protected] | |
with: | |
ref: ${{ github.ref }} | |
check-name: 'Run tests' | |
repo-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} | |
wait-interval: 10 | |
- name: Apply Supabase Migrations | |
run: supabase db push | |
- name: Update functions | |
env: | |
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_TOKEN }} | |
run: supabase functions deploy | |
deploy_webapp: | |
needs: supabase_deploy | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup bun | |
uses: oven-sh/setup-bun@v1 | |
with: | |
bun-version: latest | |
- name: Install dependencies | |
run: bun install | |
- name: Set environment variable | |
run: | | |
if [[ ${{ github.ref }} == *-alpha* ]]; then | |
echo "ENV=alpha" >> $GITHUB_ENV | |
echo "PROJECT_NAME=capgo-webapp-preprod" >> $GITHUB_ENV | |
echo "CHANNEL=alpha" >> $GITHUB_ENV | |
else | |
echo "ENV=prod" >> $GITHUB_ENV | |
echo "PROJECT_NAME=capgo-webapp" >> $GITHUB_ENV | |
echo "CHANNEL=production" >> $GITHUB_ENV | |
fi | |
- name: Build | |
run: bun ${{ env.ENV == 'prod' && 'mobile' || 'dev-mobile' }} | |
env: | |
VITE_VAPID_KEY: ${{ secrets.VITE_VAPID_KEY }} | |
VITE_FIREBASE_CONFIG: ${{ secrets.VITE_FIREBASE_CONFIG }} | |
- name: Publish CF webapp | |
run: bunx wrangler@latest pages deploy dist --project-name ${{ env.PROJECT_NAME }} --branch main | |
env: | |
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} | |
- name: Deploy to Capgo | |
run: bunx @capgo/cli@latest bundle upload -a ${{ secrets.CAPGO_TOKEN }} --channel ${{ env.CHANNEL }} --partial --tus | |
env: | |
CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }} | |
deploy_api: | |
needs: supabase_deploy | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup bun | |
uses: oven-sh/setup-bun@v1 | |
with: | |
bun-version: latest | |
- name: Install dependencies | |
run: bun install | |
- name: Set environment variable | |
run: | | |
if [[ ${{ github.ref }} == *-alpha* ]]; then | |
echo "ENV=alpha" >> $GITHUB_ENV | |
else | |
echo "ENV=prod" >> $GITHUB_ENV | |
fi | |
- name: Deploy CF Worker API | |
run: bun run deploy:cloudflare:api:${{ env.ENV }} | |
env: | |
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} | |
deploy_files: | |
needs: supabase_deploy | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup bun | |
uses: oven-sh/setup-bun@v1 | |
with: | |
bun-version: latest | |
- name: Install dependencies | |
run: bun install | |
- name: Set environment variable | |
run: | | |
if [[ ${{ github.ref }} == *-alpha* ]]; then | |
echo "ENV=alpha" >> $GITHUB_ENV | |
else | |
echo "ENV=prod" >> $GITHUB_ENV | |
fi | |
- name: Deploy CF Worker Files | |
run: bun run deploy:cloudflare:files:${{ env.ENV }} | |
env: | |
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} | |
deploy_plugin: | |
needs: supabase_deploy | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup bun | |
uses: oven-sh/setup-bun@v1 | |
with: | |
bun-version: latest | |
- name: Install dependencies | |
run: bun install | |
- name: Set environment variable | |
run: | | |
if [[ ${{ github.ref }} == *-alpha* ]]; then | |
echo "ENV=alpha" >> $GITHUB_ENV | |
else | |
echo "ENV=prod" >> $GITHUB_ENV | |
fi | |
- name: Deploy CF Worker Plugin | |
run: bun run deploy:cloudflare:plugin:${{ env.ENV }} | |
env: | |
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} |