Deploying kbsb-demodash (fred-snyder). #54
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} | |
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} | |
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: | | |
printf "CORS_DOMAIN=https://demodash.kbsb.app" > .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 | |
printf "AWS_ACCOUNT_ID=$AWS_ACCOUNT_ID\n" >> .env | |
working-directory: ./lambdas/todos/.aws | |
- run: | | |
aws ecr get-login-password --region eu-central-1 | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID | |
working-directory: ./lambdas/todos | |
# - run: | | |
# docker build -t "$(image_name)" . | |
# working-directory: ./lambdas/todos | |
# - run: | | |
# docker push "$(ecr)"/"$(docker_repo)" | |
# working-directory: ./lambdas/todos |