mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
213 lines
7.9 KiB
YAML
213 lines
7.9 KiB
YAML
name: Deployment pipeline
|
|
on: [workflow_dispatch]
|
|
|
|
permissions:
|
|
id-token: write
|
|
contents: read
|
|
|
|
jobs:
|
|
infisical-tests:
|
|
name: Integration tests
|
|
# https://docs.github.com/en/actions/using-workflows/reusing-workflows#overview
|
|
uses: ./.github/workflows/run-backend-tests.yml
|
|
|
|
infisical-image:
|
|
name: Build
|
|
runs-on: ubuntu-latest
|
|
needs: [infisical-tests]
|
|
steps:
|
|
- name: ☁️ Checkout source
|
|
uses: actions/checkout@v3
|
|
- name: 📦 Install dependencies to test all dependencies
|
|
run: npm ci --only-production
|
|
working-directory: backend
|
|
- name: Save commit hashes for tag
|
|
id: commit
|
|
uses: pr-mpt/actions-commit-hash@v2
|
|
- name: 🔧 Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v2
|
|
- name: 🐋 Login to Docker Hub
|
|
uses: docker/login-action@v2
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
- name: Set up Depot CLI
|
|
uses: depot/setup-action@v1
|
|
- name: 🏗️ Build backend and push to docker hub
|
|
uses: depot/build-push-action@v1
|
|
with:
|
|
project: 64mmf0n610
|
|
token: ${{ secrets.DEPOT_PROJECT_TOKEN }}
|
|
push: true
|
|
context: .
|
|
file: Dockerfile.standalone-infisical
|
|
tags: |
|
|
infisical/staging_infisical:${{ steps.commit.outputs.short }}
|
|
infisical/staging_infisical:latest
|
|
platforms: linux/amd64,linux/arm64
|
|
build-args: |
|
|
POSTHOG_API_KEY=${{ secrets.PUBLIC_POSTHOG_API_KEY }}
|
|
INFISICAL_PLATFORM_VERSION=${{ steps.commit.outputs.short }}
|
|
|
|
gamma-deployment:
|
|
name: Deploy to gamma
|
|
runs-on: ubuntu-latest
|
|
needs: [infisical-image]
|
|
environment:
|
|
name: Gamma
|
|
steps:
|
|
- uses: twingate/github-action@v1
|
|
with:
|
|
# The Twingate Service Key used to connect Twingate to the proper service
|
|
# Learn more about [Twingate Services](https://docs.twingate.com/docs/services)
|
|
#
|
|
# Required
|
|
service-key: ${{ secrets.TWINGATE_SERVICE_KEY }}
|
|
- name: Checkout code
|
|
uses: actions/checkout@v2
|
|
- name: Setup Node.js environment
|
|
uses: actions/setup-node@v2
|
|
with:
|
|
node-version: "20"
|
|
- name: Change directory to backend and install dependencies
|
|
env:
|
|
DB_CONNECTION_URI: ${{ secrets.DB_CONNECTION_URI }}
|
|
run: |
|
|
cd backend
|
|
npm install
|
|
npm run migration:latest
|
|
- name: Configure AWS Credentials
|
|
uses: aws-actions/configure-aws-credentials@v4
|
|
with:
|
|
audience: sts.amazonaws.com
|
|
aws-region: us-east-1
|
|
role-to-assume: arn:aws:iam::905418227878:role/deploy-new-ecs-img
|
|
- name: Save commit hashes for tag
|
|
id: commit
|
|
uses: pr-mpt/actions-commit-hash@v2
|
|
- name: Download task definition
|
|
run: |
|
|
aws ecs describe-task-definition --task-definition infisical-core-gamma-stage --query taskDefinition > task-definition.json
|
|
- name: Render Amazon ECS task definition
|
|
id: render-web-container
|
|
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
with:
|
|
task-definition: task-definition.json
|
|
container-name: infisical-core
|
|
image: infisical/staging_infisical:${{ steps.commit.outputs.short }}
|
|
environment-variables: "LOG_LEVEL=info"
|
|
- name: Deploy to Amazon ECS service
|
|
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
with:
|
|
task-definition: ${{ steps.render-web-container.outputs.task-definition }}
|
|
service: infisical-core-gamma-stage
|
|
cluster: infisical-gamma-stage
|
|
wait-for-service-stability: true
|
|
|
|
production-us:
|
|
name: US production deploy
|
|
runs-on: ubuntu-latest
|
|
needs: [gamma-deployment]
|
|
environment:
|
|
name: Production
|
|
steps:
|
|
- uses: twingate/github-action@v1
|
|
with:
|
|
# The Twingate Service Key used to connect Twingate to the proper service
|
|
# Learn more about [Twingate Services](https://docs.twingate.com/docs/services)
|
|
#
|
|
# Required
|
|
service-key: ${{ secrets.TWINGATE_SERVICE_KEY }}
|
|
- name: Checkout code
|
|
uses: actions/checkout@v2
|
|
- name: Setup Node.js environment
|
|
uses: actions/setup-node@v2
|
|
with:
|
|
node-version: "20"
|
|
- name: Change directory to backend and install dependencies
|
|
env:
|
|
DB_CONNECTION_URI: ${{ secrets.DB_CONNECTION_URI }}
|
|
AUDIT_LOGS_DB_CONNECTION_URI: ${{ secrets.AUDIT_LOGS_DB_CONNECTION_URI }}
|
|
run: |
|
|
cd backend
|
|
npm install
|
|
npm run migration:latest
|
|
- name: Configure AWS Credentials
|
|
uses: aws-actions/configure-aws-credentials@v4
|
|
with:
|
|
audience: sts.amazonaws.com
|
|
aws-region: us-east-1
|
|
role-to-assume: arn:aws:iam::381492033652:role/gha-make-prod-deployment
|
|
- name: Save commit hashes for tag
|
|
id: commit
|
|
uses: pr-mpt/actions-commit-hash@v2
|
|
- name: Download task definition
|
|
run: |
|
|
aws ecs describe-task-definition --task-definition infisical-core-platform --query taskDefinition > task-definition.json
|
|
- name: Render Amazon ECS task definition
|
|
id: render-web-container
|
|
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
with:
|
|
task-definition: task-definition.json
|
|
container-name: infisical-core-platform
|
|
image: infisical/staging_infisical:${{ steps.commit.outputs.short }}
|
|
environment-variables: "LOG_LEVEL=info"
|
|
- name: Deploy to Amazon ECS service
|
|
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
with:
|
|
task-definition: ${{ steps.render-web-container.outputs.task-definition }}
|
|
service: infisical-core-platform
|
|
cluster: infisical-core-platform
|
|
wait-for-service-stability: true
|
|
|
|
production-eu:
|
|
name: EU production deploy
|
|
runs-on: ubuntu-latest
|
|
needs: [production-us]
|
|
environment:
|
|
name: Production
|
|
steps:
|
|
- uses: twingate/github-action@v1
|
|
with:
|
|
service-key: ${{ secrets.TWINGATE_SERVICE_KEY }}
|
|
- name: Checkout code
|
|
uses: actions/checkout@v2
|
|
- name: Setup Node.js environment
|
|
uses: actions/setup-node@v2
|
|
with:
|
|
node-version: "20"
|
|
- name: Change directory to backend and install dependencies
|
|
env:
|
|
DB_CONNECTION_URI: ${{ secrets.DB_CONNECTION_URI }}
|
|
run: |
|
|
cd backend
|
|
npm install
|
|
npm run migration:latest
|
|
- name: Configure AWS Credentials
|
|
uses: aws-actions/configure-aws-credentials@v4
|
|
with:
|
|
audience: sts.amazonaws.com
|
|
aws-region: us-east-1
|
|
role-to-assume: arn:aws:iam::345594589636:role/gha-make-prod-deployment
|
|
- name: Save commit hashes for tag
|
|
id: commit
|
|
uses: pr-mpt/actions-commit-hash@v2
|
|
- name: Download task definition
|
|
run: |
|
|
aws ecs describe-task-definition --task-definition infisical-core-platform --query taskDefinition > task-definition.json
|
|
- name: Render Amazon ECS task definition
|
|
id: render-web-container
|
|
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
with:
|
|
task-definition: task-definition.json
|
|
container-name: infisical-core-platform
|
|
image: infisical/staging_infisical:${{ steps.commit.outputs.short }}
|
|
environment-variables: "LOG_LEVEL=info"
|
|
- name: Deploy to Amazon ECS service
|
|
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
with:
|
|
task-definition: ${{ steps.render-web-container.outputs.task-definition }}
|
|
service: infisical-core-platform
|
|
cluster: infisical-core-platform
|
|
wait-for-service-stability: true
|