name: Build, Publish and Deploy to Gamma on: [workflow_dispatch] jobs: backend-image: name: Build backend image runs-on: ubuntu-latest steps: - name: โ˜๏ธ Checkout source uses: actions/checkout@v3 - name: ๐Ÿ“ฆ Install dependencies to test all dependencies run: npm ci --only-production working-directory: backend - name: ๐Ÿงช Run tests run: npm run test:ci 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 export to Docker uses: depot/build-push-action@v1 with: project: 64mmf0n610 token: ${{ secrets.DEPOT_PROJECT_TOKEN }} load: true context: backend tags: infisical/backend:test - name: โป Spawn backend container and dependencies run: | docker compose -f .github/resources/docker-compose.be-test.yml up --wait --quiet-pull - name: ๐Ÿงช Test backend image run: | ./.github/resources/healthcheck.sh infisical-backend-test - name: โป Shut down backend container and dependencies run: | docker compose -f .github/resources/docker-compose.be-test.yml down - name: ๐Ÿ—๏ธ Build backend and push uses: depot/build-push-action@v1 with: project: 64mmf0n610 token: ${{ secrets.DEPOT_PROJECT_TOKEN }} push: true context: backend tags: infisical/backend:${{ steps.commit.outputs.short }}, infisical/backend:latest platforms: linux/amd64,linux/arm64 frontend-image: name: Build frontend image runs-on: ubuntu-latest steps: - name: โ˜๏ธ Checkout source uses: actions/checkout@v3 - 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 frontend and export to Docker uses: depot/build-push-action@v1 with: load: true token: ${{ secrets.DEPOT_PROJECT_TOKEN }} project: 64mmf0n610 context: frontend tags: infisical/frontend:test build-args: | POSTHOG_API_KEY=${{ secrets.PUBLIC_POSTHOG_API_KEY }} - name: โป Spawn frontend container run: | docker run -d --rm --name infisical-frontend-test infisical/frontend:test - name: ๐Ÿงช Test frontend image run: | ./.github/resources/healthcheck.sh infisical-frontend-test - name: โป Shut down frontend container run: | docker stop infisical-frontend-test - name: ๐Ÿ—๏ธ Build frontend and push uses: depot/build-push-action@v1 with: project: 64mmf0n610 push: true token: ${{ secrets.DEPOT_PROJECT_TOKEN }} context: frontend tags: infisical/frontend:${{ steps.commit.outputs.short }}, infisical/frontend:latest platforms: linux/amd64,linux/arm64 build-args: | POSTHOG_API_KEY=${{ secrets.PUBLIC_POSTHOG_API_KEY }} gamma-deployment: name: Deploy to gamma runs-on: ubuntu-latest needs: [frontend-image, backend-image] steps: - name: โ˜๏ธ Checkout source uses: actions/checkout@v3 - name: Install Helm uses: azure/setup-helm@v3 with: version: v3.10.0 - name: Install infisical helm chart run: | helm repo add infisical-helm-charts 'https://dl.cloudsmith.io/public/infisical/helm-charts/helm/charts/' helm repo update - name: Install kubectl uses: azure/setup-kubectl@v3 - name: Install doctl uses: digitalocean/action-doctl@v2 with: token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }} - name: Save DigitalOcean kubeconfig with short-lived credentials run: doctl kubernetes cluster kubeconfig save --expiry-seconds 600 k8s-1-25-4-do-0-nyc1-1670645170179 - name: switch to gamma namespace run: kubectl config set-context --current --namespace=gamma - name: test kubectl run: kubectl get ingress - name: Download helm values to file and upgrade gamma deploy run: | wget https://raw.githubusercontent.com/Infisical/infisical/main/.github/values.yaml helm upgrade infisical infisical-helm-charts/infisical --values values.yaml --recreate-pods if [[ $(helm status infisical) == *"FAILED"* ]]; then echo "Helm upgrade failed" exit 1 else echo "Helm upgrade was successful" fi