Add GitHub Actions workflow for build and deploy
This commit is contained in:
parent
9b825811be
commit
3346e225c1
75
.github/workflows/build-and-deploy.yml
vendored
Normal file
75
.github/workflows/build-and-deploy.yml
vendored
Normal file
@ -0,0 +1,75 @@
|
||||
name: Build and Deploy
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build-and-deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set node version
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 24
|
||||
registry-url: "https://registry.npmjs.org"
|
||||
|
||||
- name: Install
|
||||
run: |
|
||||
npm ci
|
||||
npm run setheapsize
|
||||
|
||||
- name: Lint
|
||||
run: npx grunt lint
|
||||
|
||||
- name: Unit Tests
|
||||
run: |
|
||||
npm test
|
||||
npm run testnodeconsumer
|
||||
|
||||
- name: Production Build
|
||||
if: success()
|
||||
run: npx grunt prod
|
||||
|
||||
- name: Upload Build Artifact
|
||||
if: success()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: zipped-build
|
||||
path: build/prod/*.zip
|
||||
retention-days: 1
|
||||
|
||||
- name: Configure AWS credentials
|
||||
if: success()
|
||||
uses: aws-actions/configure-aws-credentials@v4
|
||||
with:
|
||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
aws-region: ${{ secrets.AWS_REGION }}
|
||||
|
||||
- name: Unzip build
|
||||
if: success()
|
||||
run: unzip build/prod/*.zip -d build/unpacked
|
||||
|
||||
- name: Sync to S3
|
||||
if: success()
|
||||
run: |
|
||||
aws s3 sync build/unpacked/ s3://${{ secrets.S3_BUCKET_NAME }} \
|
||||
--delete \
|
||||
--cache-control "max-age=86400"
|
||||
|
||||
- name: Invalidate CloudFront
|
||||
if: success()
|
||||
run: |
|
||||
aws cloudfront create-invalidation \
|
||||
--distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} \
|
||||
--paths "/*"
|
||||
Loading…
x
Reference in New Issue
Block a user