Skip to content

deploy.production-backend #1

deploy.production-backend

deploy.production-backend #1

name: deploy.production-backend
on:
push:
branches: [main, hotfix-20241018]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest-large
if: ${{ github.event_name == 'push' && contains(github.event.head_commit.message, 'RELEASE') }}
steps:
- name: Display System Information
run: |
echo "Printing system info:"
echo $LC_ALL
echo $LANG
- name: Display Github Event Context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: |
echo "Printing github context:"
echo "$GITHUB_CONTEXT"
- name: Clone Repository to Head of Main Branch
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Display Git Information
run: |
echo "Printing git info:"
git tag
git status
git log -20 --stat --tags
- name: Setup Node Environment
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: "npm"
- name: Display Node and NPM Information
run: |
node --version
npm --version
- name: Install Dependencies from package.json
run: npm ci
- name: Execute Linter
run: |
npm run lint:backend
- name: Run Tests
env:
DOTENV_PRIVATE_KEY_PRODUCTION: ${{ secrets.DOTENV_PRIVATE_KEY_PRODUCTION }}
VITE_APP_SUPABASE_URL: https://auth.vapi.ai
VITE_APP_SUPABASE_KEY: ${{ secrets.SUPABASE_CLIENT_KEY }}
NODE_OPTIONS: --max-old-space-size=8192
run: |
npm run build:backend
npm run test:backend
npm run test:dashboard
- name: Remove unneeded files
run: |
rm -rf ./apps/dashboard
- name: Set up Docker
env:
DOTENV_PRIVATE_KEY_PRODUCTION: ${{ secrets.DOTENV_PRIVATE_KEY_PRODUCTION }}
uses: docker/setup-buildx-action@v3
- name: Set up AWS Credentials
env:
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
DOTENV_PRIVATE_KEY_PRODUCTION: ${{ secrets.DOTENV_PRIVATE_KEY_PRODUCTION }}
run: |
AWS_ACCESS_KEY_ID=$(node scripts/envVariableGet.js AWS_ACCESS_KEY_ID)
AWS_ACCESS_KEY_ID=$(echo "$AWS_ACCESS_KEY_ID" | tr -d '[:space:]')
echo AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID >> "$GITHUB_ENV"
AWS_SECRET_ACCESS_KEY=$(node scripts/envVariableGet.js AWS_SECRET_ACCESS_KEY)
AWS_SECRET_ACCESS_KEY=$(echo $AWS_SECRET_ACCESS_KEY | tr -d '[:space:]')
echo AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY >> "$GITHUB_ENV"
- name: Pulumi Up
uses: pulumi/actions@v5
env:
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
DOTENV_PRIVATE_KEY_PRODUCTION: ${{ secrets.DOTENV_PRIVATE_KEY_PRODUCTION }}
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-west-2
PULUMI_K8S_ENABLE_PATCH_FORCE: "true"
with:
command: up
stack-name: vapi/aws-us-west-2-backend-production4