Skip to content

Merge branch 'main' of github.com:a-type/biscuits #232

Merge branch 'main' of github.com:a-type/biscuits

Merge branch 'main' of github.com:a-type/biscuits #232

Workflow file for this run

name: API Deploy
on:
push:
branches: [main]
env:
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
changed_files:
name: Determine changed files
runs-on: ubuntu-latest
outputs:
api: ${{ steps.api.outputs.any_changed }}
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Get API changed files
id: api
uses: tj-actions/changed-files@v44
with:
since_last_remote_commit: true
files: |
**/server/src/**/*.ts
**/server/package.json
**/packages/apps/src/**/*.ts
**/packages/db/src/**/*.ts
**/packages/error/**/*.ts
**/packages/libraries/**/*.ts
**/apps/gnocchi/scanning/**/*.ts
**/apps/*/hub/**/*.ts
**/apps/*/hub/**/*.tsx
./Dockerfile
./fly.toml
./pnpm-lock.yaml
./.github/workflows/deploy-api.yml
build-and-push-image:
name: Build and push Docker image
runs-on: ubuntu-latest
needs: [changed_files]
cancel-timeout-minutes: 10
if: ${{ needs.changed_files.outputs.api == 'true' }}
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Log in to the Container registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=schedule
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
type=sha
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
deploy:
runs-on: ubuntu-latest
name: Deploy to production
needs: build-and-push-image
cancel-timeout-minutes: 5
steps:
- uses: actions/checkout@v2
- uses: superfly/flyctl-actions/setup-flyctl@master
- name: Add SHORT_SHA env property with commit short sha
run: echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-7`" >> $GITHUB_ENV
- name: Deploy API
# deploy the image from ghcr.io for the target sha (short version)
run: flyctl deploy --image ghcr.io/a-type/biscuits:sha-${SHORT_SHA}
invalidate-ssr:
name: Invalidate SSR caches
runs-on: ubuntu-latest
needs: deploy
steps:
- name: Invalidate Gnocchi SSR cache
uses: chetan/invalidate-cloudfront-action@v2
env:
AWS_ACCESS_KEY_ID: ${{ secrets.DEPLOYER_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.DEPLOYER_AWS_SECRET_ACCESS_KEY }}
DISTRIBUTION: ${{ secrets.CLOUDFRONT_ID_GNOCCHI_HUB }}
PATHS: '/*'
AWS_REGION: 'us-east-1'
# - name: Invalidate Wish Wash SSR cache
# uses: chetan/invalidate-cloudfront-action@v2
# env:
# AWS_ACCESS_KEY_ID: ${{ secrets.DEPLOYER_AWS_ACCESS_KEY_ID }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.DEPLOYER_AWS_SECRET_ACCESS_KEY }}
# DISTRIBUTION: ${{ secrets.CLOUDFRONT_ID_WISH_WASH_HUB }}
# PATHS: '/*'
# AWS_REGION: 'us-east-1'