Skip to content

Merge pull request #2276 from culturecreates/enhancement/issue-2273-u… #321

Merge pull request #2276 from culturecreates/enhancement/issue-2273-u…

Merge pull request #2276 from culturecreates/enhancement/issue-2273-u… #321

name: Production build and deploy to S3
on:
push:
branches:
- main
jobs:
trigger-cypress-tests:
uses: ./.github/workflows/run-cypress-tests.yml
with:
environment: 'production'
grep: ''
grepTags: '@essential'
secrets:
DOCKER_PAT: ${{ secrets.DOCKER_PAT }}
CYPRESS_PASSWORD: ${{ secrets.CYPRESS_PASSWORD }}
S3_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }}
S3_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY }}
STAGING_SERVER_IP: ${{ secrets.STAGING_SERVER_IP }}
AWS_PRIVATE_KEY_UBUNTU_USER: ${{ secrets.AWS_PRIVATE_KEY_UBUNTU_USER }}
AWS_SES_ACCESS_KEY: ${{ secrets.AWS_SES_ACCESS_KEY }}
AWS_SES_SECRET_ACCESS_KEY: ${{ secrets.AWS_SES_SECRET_ACCESS_KEY }}
GOOGLE_MAPS_API_KEY: ${{ secrets.GOOGLE_MAPS_API_KEY }}
GOOGLE_MAPS_ID: ${{ secrets.GOOGLE_MAPS_ID }}
build-and-deploy:
env:
AWS_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY }}
AWS_REGION: ca-central-1
WEBHOSTING_BUCKET_NAME: cms.footlight.io
runs-on: ubuntu-latest
container:
image: sleavely/node-awscli:22.x
steps:
- name: checkout
uses: actions/checkout@v5
- name: setup node
run: npm install --legacy-peer-deps
# Append additional environment variables to .env.staging
- name: Add extra env variables
run: |
echo "" >> .env.production
echo "VITE_APP_GOOGLE_MAPS_API_KEY=${{ secrets.GOOGLE_MAPS_API_KEY }}" >> .env.production
echo "VITE_APP_GOOGLE_MAPS_ID=${{ secrets.GOOGLE_MAPS_ID }}" >> .env.production
- name: build
run: npm run build:production
# Upload to S3
- name: sync s3
run: aws s3 sync ./build s3://${{env.WEBHOSTING_BUCKET_NAME}}/ --acl public-read --delete --exclude index.html
- name: set cache-control on index.html
run: aws s3 cp ./build/index.html s3://${{env.WEBHOSTING_BUCKET_NAME}}/index.html --metadata-directive REPLACE --cache-control max-age=0,s-maxage=86400 --acl public-read --content-type text/html
# Invalidate CloudFront (this action)
- name: Invalidate CloudFront
uses: chetan/invalidate-cloudfront-action@v2
env:
DISTRIBUTION: E3S97I9K4Q2UXB
PATHS: "/*"
release-notification:
if: success()
name: Send Email on Success
needs: build-and-deploy
runs-on: ubuntu-latest
steps:
- name: Send email via Amazon SES
uses: aws-actions/configure-aws-credentials@v5
with:
aws-access-key-id: ${{ secrets.AWS_SES_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_SES_SECRET_ACCESS_KEY }}
aws-region: ca-central-1
- name: Send email
run: |
aws ses send-email \
--from ${{vars.FOOTLIGHT_INFO_EMAIL}} \
--destination "ToAddresses=${{ vars.SUPPORT_EMAIL }},${{ vars.REGRESSION_TEST_DEV_EMAIL }}" \
--message "Subject={Data='Footlight CMS Deployment'},Body={Html={Data='${{ vars.NEW_RELEASE_MESSAGE }}'}}"