mirror of
https://github.com/sourcebot-dev/sourcebot.git
synced 2025-12-11 20:05:25 +00:00
87 lines
3.1 KiB
YAML
87 lines
3.1 KiB
YAML
name: GCP Deploy
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
environment:
|
|
required: true
|
|
description: 'The environment to deploy to'
|
|
type: string
|
|
|
|
jobs:
|
|
gcp-deploy:
|
|
runs-on: ubuntu-latest
|
|
environment: ${{ inputs.environment }}
|
|
env:
|
|
IMAGE_PATH: us-west1-docker.pkg.dev/${{ secrets.GCP_PROJECT_ID }}/sourcebot/sourcebot-${{ vars.NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT }}
|
|
steps:
|
|
- name: 'Checkout'
|
|
uses: 'actions/checkout@v3'
|
|
with:
|
|
submodules: "true"
|
|
|
|
# @see: https://github.com/google-github-actions/auth?tab=readme-ov-file#direct-wif
|
|
- name: 'Google auth'
|
|
id: 'auth'
|
|
uses: 'google-github-actions/auth@v2'
|
|
with:
|
|
project_id: '${{ secrets.GCP_PROJECT_ID }}'
|
|
workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}'
|
|
|
|
- name: 'Set up Cloud SDK'
|
|
uses: 'google-github-actions/setup-gcloud@v1'
|
|
with:
|
|
project_id: '${{ secrets.GCP_PROJECT_ID }}'
|
|
|
|
- name: 'Docker auth'
|
|
run: |-
|
|
gcloud auth configure-docker us-west1-docker.pkg.dev
|
|
|
|
- name: Configure SSH
|
|
run: |
|
|
mkdir -p ~/.ssh/
|
|
echo "${{ secrets.GCP_SSH_PRIVATE_KEY }}" > ~/.ssh/private.key
|
|
chmod 600 ~/.ssh/private.key
|
|
echo "${{ secrets.GCP_SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts
|
|
|
|
- name: Build Docker image
|
|
id: build
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: .
|
|
push: true
|
|
tags: |
|
|
${{ env.IMAGE_PATH }}:${{ github.sha }}
|
|
${{ env.IMAGE_PATH }}:latest
|
|
build-args: |
|
|
NEXT_PUBLIC_SOURCEBOT_VERSION=${{ github.ref_name }}
|
|
NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT=${{ vars.NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT }}
|
|
NEXT_PUBLIC_SENTRY_ENVIRONMENT=${{ vars.NEXT_PUBLIC_SENTRY_ENVIRONMENT }}
|
|
NEXT_PUBLIC_SENTRY_WEBAPP_DSN=${{ vars.NEXT_PUBLIC_SENTRY_WEBAPP_DSN }}
|
|
NEXT_PUBLIC_SENTRY_BACKEND_DSN=${{ vars.NEXT_PUBLIC_SENTRY_BACKEND_DSN }}
|
|
NEXT_PUBLIC_LANGFUSE_PUBLIC_KEY=${{ vars.NEXT_PUBLIC_LANGFUSE_PUBLIC_KEY }}
|
|
NEXT_PUBLIC_LANGFUSE_BASE_URL=${{ vars.NEXT_PUBLIC_LANGFUSE_BASE_URL }}
|
|
SENTRY_SMUAT=${{ secrets.SENTRY_SMUAT }}
|
|
SENTRY_ORG=${{ vars.SENTRY_ORG }}
|
|
SENTRY_WEBAPP_PROJECT=${{ vars.SENTRY_WEBAPP_PROJECT }}
|
|
SENTRY_BACKEND_PROJECT=${{ vars.SENTRY_BACKEND_PROJECT }}
|
|
|
|
|
|
- name: Deploy to GCP
|
|
run: |
|
|
ssh -i ~/.ssh/private.key ${{ secrets.GCP_USERNAME }}@${{ secrets.GCP_HOST }} << 'EOF'
|
|
# First pull the new image
|
|
docker pull ${{ env.IMAGE_PATH }}:${{ github.sha }}
|
|
|
|
# Stop and remove any existing container
|
|
docker stop -t 60 sourcebot || true
|
|
docker rm sourcebot || true
|
|
|
|
# Run the new container
|
|
docker run -d \
|
|
-p 80:3000 \
|
|
--env-file .env \
|
|
-v /mnt/data:/data \
|
|
--name sourcebot \
|
|
${{ env.IMAGE_PATH }}:${{ github.sha }}
|
|
EOF
|