0.18.0 #876
Workflow file for this run
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: Node CI | |
# Push tests pushes; PR tests merges | |
on: [ push, pull_request ] | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
# Test the build | |
test: | |
# Setup | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
node-version: [ 14.x, 16.x, 18.x ] | |
os: [ windows-latest, ubuntu-latest, macOS-latest, self-hosted ] | |
# Node.js does not have a build of 14.x for Apple Silicon | |
exclude: | |
- os: self-hosted | |
node-version: 14.x | |
# Go | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v3 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Env | |
run: | | |
echo "Event name: ${{ github.event_name }}" | |
echo "Git ref: ${{ github.ref }}" | |
echo "GH actor: ${{ github.actor }}" | |
echo "SHA: ${{ github.sha }}" | |
VER=`node --version`; echo "Node ver: $VER" | |
VER=`npm --version`; echo "npm ver: $VER" | |
- name: Install Globals | |
run: npm install -g @enhance/arc-plugin-enhance | |
- name: Install | |
run: npm install | |
- name: Test | |
run: npm test | |
env: | |
CI: true | |
- name: Notify | |
uses: homoluctus/slatify@master | |
if: github.ref == 'refs/heads/main' && failure() | |
with: | |
type: ${{ job.status }} | |
job_name: '*Test*' | |
url: ${{ secrets.SLACK_WEBHOOK }} | |
commit: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
# ----- Only git tag testing + release deployment beyond this point ----- # | |
# Publish the build to S3 | |
publish: | |
# Setup | |
needs: test | |
if: startsWith(github.ref, 'refs/tags/v') || | |
github.ref == 'refs/heads/main' | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ ubuntu-latest, self-hosted ] | |
# Go | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v3 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Install | |
run: npm i | |
- name: Publish 'latest' (aka production) build | |
if: startsWith(github.ref, 'refs/tags/v') | |
run: npm run publish | |
env: | |
DEPLOY: prod | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
BEGIN_CLI_CLIENT_ID_STAGING: ${{ secrets.BEGIN_CLI_CLIENT_ID_STAGING }} | |
BEGIN_CLI_CLIENT_ID_PRODUCTION: ${{ secrets.BEGIN_CLI_CLIENT_ID_PRODUCTION }} | |
S3_BUCKET: ${{ secrets.S3_BUCKET }} | |
- name: Publish 'main' (aka canary) build | |
if: github.ref == 'refs/heads/main' | |
run: npm run publish | |
env: | |
DEPLOY: main | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
BEGIN_CLI_CLIENT_ID_STAGING: ${{ secrets.BEGIN_CLI_CLIENT_ID_STAGING }} | |
BEGIN_CLI_CLIENT_ID_PRODUCTION: ${{ secrets.BEGIN_CLI_CLIENT_ID_PRODUCTION }} | |
S3_BUCKET: ${{ secrets.S3_BUCKET }} | |
# Deploy to the API + CDN | |
deploy: | |
# Setup | |
needs: publish | |
if: startsWith(github.ref, 'refs/tags/v') || | |
github.ref == 'refs/heads/main' | |
runs-on: ubuntu-latest | |
# Go | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v3 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Install | |
run: npm i aws-sdk | |
- name: Deploy 'latest' (aka production) build | |
if: startsWith(github.ref, 'refs/tags/v') | |
run: npm run deploy | |
env: | |
DEPLOY: prod | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
CF_DISTRO: ${{ secrets.CF_DISTRO }} | |
LATEST_API: ${{ secrets.LATEST_API }} | |
- name: Deploy 'main' (aka canary) build | |
if: github.ref == 'refs/heads/main' | |
run: npm run deploy | |
env: | |
DEPLOY: main | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
CF_DISTRO: ${{ secrets.CF_DISTRO }} | |
LATEST_API: ${{ secrets.LATEST_API }} | |
- name: Notify | |
uses: homoluctus/slatify@master | |
with: | |
type: ${{ job.status }} | |
job_name: '*Deploy*' | |
url: ${{ secrets.SLACK_WEBHOOK }} | |
commit: true | |
token: ${{ secrets.GITHUB_TOKEN }} |