6.0.0 #31
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: Automation | |
on: | |
push: | |
branches: [ '**' ] | |
tags: [ '**' ] | |
release: | |
types: [ 'created' ] | |
pull_request: | |
branches: [ '**' ] | |
jobs: | |
build: | |
env: | |
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID || '' }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_REGION: ${{ secrets.AWS_REGION }} | |
SOURCE_DIR: 'deploy' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install xvfb | |
run: sudo apt-get install xvfb | |
- name: Use Node.js 18.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: Install dependencies | |
run: npm ci | |
- name: Run Unit Tests | |
run: xvfb-run --auto-servernum npm test | |
- name: Prepare Deploy | |
run: npm run deploy:ci | |
# All the below are deploy-related steps | |
- name: Extract Branch Name | |
id: branch_name | |
if: github.event_name == 'push' && !contains(github.ref, 'refs/tags') | |
run: echo BRANCH_NAME=${GITHUB_REF/refs\/heads\//} >> $GITHUB_OUTPUT | |
- name: Extract Tag Name | |
id: tag_name | |
if: github.event_name == 'release' || contains(github.ref, 'refs/tags') | |
run: echo TAG_NAME=${GITHUB_REF/refs\/tags\//} >> $GITHUB_OUTPUT | |
# Examples: | |
# 1) PR feature/acme merged into dev | |
# 2) branch A merged into branch B | |
# 3) branch A pushed directly to git | |
- name: Deploy Non-Tag Branches | |
uses: jakejarvis/s3-sync-action@master | |
if: github.event_name == 'push' && !contains(github.ref, 'refs/tags') && env.AWS_ACCESS_KEY_ID != '' | |
with: | |
args: --acl public-read --follow-symlinks --delete --cache-control "max-age=60" | |
env: | |
DEST_DIR: ${{ steps.branch_name.outputs.BRANCH_NAME }} | |
# Release is published and deployed into s3://bucket-name/v5.22/ | |
- name: Deploy Released Branches | |
uses: jakejarvis/s3-sync-action@master | |
if: (github.event_name == 'release' || contains(github.ref, 'refs/tags')) && env.AWS_ACCESS_KEY_ID != '' | |
with: | |
args: --acl public-read --follow-symlinks --delete --cache-control "max-age=2592000" | |
env: | |
DEST_DIR: ${{ steps.tag_name.outputs.TAG_NAME }} | |
# Same release from previous deployed into s3://bucket-name/release/ | |
- name: Deploy Latest Release | |
uses: jakejarvis/s3-sync-action@master | |
if: (github.event_name == 'release' || contains(github.ref, 'refs/tags')) && env.AWS_ACCESS_KEY_ID != '' | |
with: | |
args: --acl public-read --follow-symlinks --delete --cache-control "max-age=1209600" | |
env: | |
DEST_DIR: 'latest' | |
# Automatically attach browser files to release | |
- name: Upload to Release | |
if: github.event_name == 'release' | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: dist/* |