Skip to content

v1.0.0

v1.0.0 #3

Workflow file for this run

name: deploy
on:
release:
types: [published]
env:
MAJORVERSION: ''
MINORVERSION: ''
FULLVERSION: ''
PRERELEASE: ''
COMPONENT_NAME: ${{ github.event.repository.name }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 'Checkout GitHub Action'
uses: actions/checkout@v4
- name: 'Get Version'
id: get_version
uses: dhkatz/[email protected]
- name: 'Check for correct naming convention'
if: ${{ !steps.get_version.outputs.is-semver }}
run: exit 1
- name: 'Get major version from tag'
run: echo "MAJORVERSION=${GITHUB_BRANCH}" >> $GITHUB_ENV
env:
GITHUB_BRANCH: ${{ steps.get_version.outputs.major }}
- name: 'Get minor version from tag'
run: echo "MINORVERSION=${GITHUB_BRANCH}.${GITHUB_BRANCH_MINOR}" >> $GITHUB_ENV
env:
GITHUB_BRANCH: ${{ steps.get_version.outputs.major }}
GITHUB_BRANCH_MINOR: ${{ steps.get_version.outputs.minor }}
- name: Get patch (full) version from tag
run: echo "FULLVERSION=${GITHUB_BRANCH}" >> $GITHUB_ENV
env:
GITHUB_BRANCH: ${{ steps.get_version.outputs.version-without-v }}
- name: Get prelease version from tag
run: echo "PRERELEASE=${GITHUB_BRANCH}" >> $GITHUB_ENV
env:
GITHUB_BRANCH: ${{ steps.get_version.outputs.prerelease }}
- name: Display major version install
run: echo "Installing major version ${MAJORVERSION} for ${COMPONENT_NAME}"
- name: Display minor version install
run: echo "Installing minor version ${MINORVERSION} for ${COMPONENT_NAME}"
- name: Display patch (full) version install
run: echo "Installing patch (full) version ${FULLVERSION} for ${COMPONENT_NAME}"
- name: Production run
if: ${{ steps.get_version.outputs.prerelease == '' }}
run: echo "Running production deployment"
- name: Prerelease run
if: ${{ steps.get_version.outputs.prerelease != '' }}
run: echo "Running development deployment"
- run: npm install
- run: npm rebuild
- run: npm run-script build
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ vars.TOOLKIT_AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.TOOLKIT_AWS_ACCESS_SECRET }}
aws-region: us-east-2
- name: Deploy toolbox to S3 bucket for major version
if: ${{ steps.get_version.outputs.prerelease == '' }}
run: aws s3 sync ./dist/ s3://cdn.toolkit.illinois.edu/content/$COMPONENT_NAME/$MAJORVERSION --delete --acl bucket-owner-full-control
- name: Invalidate Cloudfront cache for major version
if: ${{ steps.get_version.outputs.prerelease == '' }}
run: aws cloudfront create-invalidation --distribution-id ${{ vars.TOOLKIT_AWS_CLOUDFRONT }} --paths "/$COMPONENT_NAME/$MAJORVERSION*"
- name: Deploy toolbox to S3 bucket for minor version
if: ${{ steps.get_version.outputs.prerelease == '' }}
run: aws s3 sync ./dist/ s3://cdn.toolkit.illinois.edu/content/$COMPONENT_NAME/$MINORVERSION --delete --acl bucket-owner-full-control
- name: Invalidate Cloudfront cache for minor version
if: ${{ steps.get_version.outputs.prerelease == '' }}
run: aws cloudfront create-invalidation --distribution-id ${{ vars.TOOLKIT_AWS_CLOUDFRONT }} --paths "/$COMPONENT_NAME/$MINORVERSION*"
- name: Deploy toolbox to S3 bucket for patch (full) version
if: ${{ steps.get_version.outputs.prerelease == '' }}
run: aws s3 sync ./dist/ s3://cdn.toolkit.illinois.edu/content/$COMPONENT_NAME/$FULLVERSION --delete --acl bucket-owner-full-control
- name: Invalidate Cloudfront cache for patch (full) version
if: ${{ steps.get_version.outputs.prerelease == '' }}
run: aws cloudfront create-invalidation --distribution-id ${{ vars.TOOLKIT_AWS_CLOUDFRONT }} --paths "/$COMPONENT_NAME/$FULLVERSION*"
- name: Deploy toolbox to S3 bucket for full version dev
if: ${{ steps.get_version.outputs.prerelease != '' }}
run: aws s3 sync ./dist/ s3://dev.toolkit.illinois.edu/content/$COMPONENT_NAME/$FULLVERSION --delete --acl bucket-owner-full-control
- name: Invalidate Cloudfront cache for full version dev
if: ${{ steps.get_version.outputs.prerelease != '' }}
run: aws cloudfront create-invalidation --distribution-id ${{ vars.TOOLKIT_AWS_CLOUDFRONT_DEV }} --paths "/$COMPONENT_NAME/$FULLVERSION*"
- name: Deploy toolbox to S3 bucket for latest dev
if: ${{ steps.get_version.outputs.prerelease != '' }}
run: aws s3 sync ./dist/ s3://dev.toolkit.illinois.edu/content/$COMPONENT_NAME/latest --delete --acl bucket-owner-full-control
- name: Invalidate Cloudfront cache for latest dev
if: ${{ steps.get_version.outputs.prerelease != '' }}
run: aws cloudfront create-invalidation --distribution-id ${{ vars.TOOLKIT_AWS_CLOUDFRONT_DEV }} --paths "/$COMPONENT_NAME/latest*"