Skip to content

Deploying kbsb-demodash (fred-snyder). #82

Deploying kbsb-demodash (fred-snyder).

Deploying kbsb-demodash (fred-snyder). #82

Workflow file for this run

name: Deploy kbsb-demodash
run-name: Deploying kbsb-demodash (${{ github.actor }}).
on:
push:
branches:
- main
jobs:
deploy-frontend:
runs-on: ubuntu-latest
env:
SCW_ACCESS_KEY_ID: ${{ secrets.SCW_ACCESS_KEY_ID }}
SCW_SECRET_ACCESS_KEY: ${{ secrets.SCW_SECRET_ACCESS_KEY }}
CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
CLOUDFLARE_ZONE: ${{ secrets.CLOUDFLARE_ZONE }}
RCLONE_SYNC_DIR: dist
RCLONE_REMOTE: scw
RCLONE_BUCKET_NAME: demodash.kbsb.app
VITE_ENDPOINT: ${{ vars.VITE_ENDPOINT }}
VITE_AIRTABLE_BASE: ${{ vars.VITE_AIRTABLE_BASE}}
steps:
- name: Check out repository code
uses: actions/checkout@v3
# env
- name: create `.env` and `.env.production`
run: |
echo "VITE_AIRTABLE_BASE=$VITE_AIRTABLE_BASE" > .env
echo "VITE_ENDPOINT=$VITE_ENDPOINT" > .env.production
working-directory: ./app
# Build the Node project
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install `pnpm`
run: npm install -g pnpm
working-directory: ./app
- name: Install dependencies
run: pnpm install
working-directory: ./app
- name: Build frontend
run: make build
working-directory: ./app
# Upload to Scaleway
- name: Install Rclone
run: sudo -v ; curl https://rclone.org/install.sh | sudo bash
- name: Verify `rclone`
run: rclone --version
- name: Create Rclone configuration file
run: |
echo "[scw]" > rclone.conf
echo "type = s3" >> rclone.conf
echo "provider = Scaleway" >> rclone.conf
echo "env_auth = true" >> rclone.conf
echo "region = nl-ams" >> rclone.conf
echo "endpoint = s3.nl-ams.scw.cloud" >> rclone.conf
echo "acl = private" >> rclone.conf
echo "bucket_acl = private" >> rclone.conf
working-directory: ./app
- name: Verify `rlcone.conf`
run: cat rclone.conf
working-directory: ./app
- name: Rclone copy `dist` folder to Scaleway bucket
run: |
# Set bucket authentication (Rclone expects AWS_)
export AWS_ACCESS_KEY_ID=$SCW_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=$SCW_SECRET_ACCESS_KEY
rclone sync --auto-confirm --config="rclone.conf" ./"$RCLONE_SYNC_DIR"/ "$RCLONE_REMOTE":"$RCLONE_BUCKET_NAME"
working-directory: ./app
# Cloudflare cache
- name: Purge Cloudflare cache
run: |
curl -X POST "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE/purge_cache" -H "Authorization: Bearer $CLOUDFLARE_TOKEN" -H "Content-Type: application/json" --data '{"purge_everything":true}'
deploy-backend:
runs-on: ubuntu-latest
env:
# .aws/.env vars
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# .env vars
CORS_DOMAIN: ${{ vars.CORS_DOMAIN }}
# make.docker vars
AWS_ARN: ${{ vars.AWS_ACCOUNT_ID }}
AWS_ACCOUNT_ID: ${{ vars.AWS_ACCOUNT_ID }}
AWS_REGION: ${{ vars.AWS_REGION }}
LAMBDA_FUNCTION_NAME: ${{ vars.LAMBDA_FUNCTION_NAME }}
ECR_DOCKER_REPO_NAME: ${{ vars.ECR_DOCKER_REPO_NAME }}
ECR_DOCKER_IMAGE_NAME: ${{ vars.ECR_DOCKER_IMAGE_NAME }}
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Create `.aws` credentials file
run: |
echo "AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID" > .env
echo "AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY" >> .env
working-directory: ./lambdas/todos/.aws
- name: Create `.env` file
run: |
echo "CORS_DOMAIN=$CORS_DOMAIN" > .env
# set the Airtable environment variables manually
working-directory: ./lambdas/todos
- name: Create `.make.docker` config file
run: |
echo "ECR_DOCKER_REPO_NAME=$ECR_DOCKER_REPO_NAME" > .make.docker
echo "ECR_DOCKER_IMAGE_NAME=$ECR_DOCKER_IMAGE_NAME" >> .make.docker
echo "LAMBDA_FUNCTION_NAME=$LAMBDA_FUNCTION_NAME" >> .make.docker
echo "AWS_REGION=$AWS_REGION" >> .make.docker
echo "AWS_ACCOUNT_ID=$AWS_ACCOUNT_ID" >> .make.docker
echo "AWS_ARN=$AWS_ACCOUNT_ID" >> .make.docker
working-directory: ./lambdas/todos
# run Makefiles
- name: Login to ECR Docker registry
run: |
make auth
working-directory: ./lambdas/todos
- name: Push changes and update function
run: |
make update
working-directory: ./lambdas/todos