feat: add course authoring mfe s3 deployment action #1
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: MFE S3 Bucket Deployment 🚀 | |
on: | |
push: | |
branches: | |
- open-release/palm.nelp | |
- open-rc/palm.nelp | |
pull_request: | |
branches: | |
- "**open-rc**" | |
jobs: | |
build: | |
environment: | |
name: ${{ github.ref_name == 'open-release/palm.nelp' && 'prod' || 'stage' }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Echo job vars" | |
env: | |
JOB_VARS: ${{ toJson(vars) }} | |
run: echo "$JOB_VARS" | |
- name: checkout mfe repo | |
uses: actions/checkout@v3 | |
- name: Use Node.js ${{ vars.NODE_VERSION }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ vars.NODE_VERSION }} | |
- name: Cache node modules | |
id: cache-npm | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-node-modules | |
with: | |
# npm cache files are stored in `~/.npm` on Linux/macOS | |
path: ~/.npm | |
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-build-${{ env.cache-name }}- | |
${{ runner.os }}-build- | |
${{ runner.os }}- | |
- if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }} | |
name: List the state of node modules | |
continue-on-error: true | |
run: npm list | |
- name: npm Install | |
run: npm install | |
- name: npm Build # check env variables of repo. | |
run: npm run build | |
env: | |
PUBLIC_PATH: ${{ vars.PUBLIC_PATH_CDN }} | |
APP_ID: ${{ vars.APP_ID }} | |
MFE_CONFIG_API_URL: ${{ vars.MFE_CONFIG_API_URL }} | |
ENABLE_NEW_RELIC: false | |
NODE_ENV: production | |
- name: print generated html of mfe | |
run: cat dist/index.html | |
- name: Share artifact inside workflow | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ vars.APP_ID }}-dist-artifact | |
path: dist | |
deployment: | |
environment: | |
name: ${{ github.ref_name == 'open-release/palm.nelp' && 'prod' || 'stage' }} | |
url: ${{ vars.PUBLIC_PATH_CDN }} | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
# get build artifact | |
- name: Get artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: ${{ vars.APP_ID }}-dist-artifact | |
- name: "Echo job vars" | |
env: | |
JOB_VARS: ${{ toJson(vars) }} | |
run: echo "$JOB_VARS" | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v2 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: ${{ secrets.AWS_DEFAULT_REGION }} | |
- name: Deploy to S3 | |
run: | | |
aws s3 sync . $S3_BUCKET --delete | |
env: | |
S3_BUCKET: s3://${{ vars.BUCKET_NAME }}/${{ vars.APP_ID }}/ | |
- name: Invalidate past cloudfront cache | |
run: | | |
aws cloudfront create-invalidation --distribution-id ${{ secrets.AWS_CLOUDFRONT_DISTRIBUTION_ID }} --paths "/${{ vars.APP_ID }}/*" |