Skip to content

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

Deploying kbsb-demodash (fred-snyder).

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

Workflow file for this run

name: Deploy kbsb-demodash
run-name: Deploying kbsb-demodash (${{ github.actor }}).
on:
push:
branches:
# - main
- fs-120-ci-cd-backend # test CI/CD config
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
steps:
- name: Check out repository code
uses: actions/checkout@v3
# 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_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
CORS_DOMAIN: ${{ vars.CORS_DOMAIN }}
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 `.env` file
run: |
# set the Airtable environment variables manually
printf "CORS_DOMAIN=$CORS_DOMAIN" > .env
working-directory: ./lambdas/todos
- name: Create `.aws` credentials file
run: |
printf "AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID\n" > .env
printf "AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY\n" >> .env
working-directory: ./lambdas/todos/.aws
- name: Create `.make.docker` config file
run: |
printf "ECR_DOCKER_REPO_NAME=$ECR_DOCKER_REPO_NAME" > .make.docker
printf "ECR_DOCKER_IMAGE_NAME=$ECR_DOCKER_IMAGE_NAME" >> .make.docker
printf "LAMBDA_FUNCTION_NAME=$LAMBDA_FUNCTION_NAME" >> .make.docker
printf "AWS_REGION=${{ vars.AWS_REGION }}" >> .make.docker
printf "AWS_ACCOUNT_ID=${{ vars.AWS_ACCOUNT_ID }}" >> .make.docker
printf "AWS_ARN=$AWS_ACCOUNT_ID" >> .make.docker
working-directory: ./lambdas/todos
- name: Login to ECR Docker registry
run: |
make auth
working-directory: ./lambdas/todos
# - run: |
# docker build -t "$(image_name)" .
# working-directory: ./lambdas/todos
# - run: |
# docker push "$(ecr)"/"$(docker_repo)"
# working-directory: ./lambdas/todos