aws-lite
#420
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 commits; pull_request tests PR merges | |
on: [push, pull_request] | |
jobs: | |
# Test the build | |
build: | |
# Setup | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [ 14.x, 16.x, 18.x, 20.x ] | |
os: [windows-latest, ubuntu-latest, macOS-latest] | |
# Go | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v1 | |
- name: Set up Node.js | |
uses: actions/setup-node@v1 | |
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 | |
run: npm install | |
- name: Test | |
run: npm test | |
- name: Notify | |
uses: homoluctus/slatify@master | |
# Only fire alert once | |
if: github.ref == 'refs/heads/master' && failure() && matrix.node-version == '20.x' && matrix.os == 'ubuntu-latest' | |
with: | |
type: ${{ job.status }} | |
job_name: '*Build*' | |
url: ${{ secrets.SLACK_WEBHOOK }} | |
commit: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
# ----- Only git tag testing + package publishing beyond this point ----- # | |
# Publish to package registries | |
publish: | |
# Setup | |
needs: build | |
if: startsWith(github.ref, 'refs/tags/v') | |
runs-on: ubuntu-latest | |
# Go | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v1 | |
- name: Set up Node.js | |
uses: actions/setup-node@v1 | |
with: | |
node-version: lts/* | |
registry-url: https://registry.npmjs.org/ | |
- name: Install | |
run: npm i | |
# Publish to npm | |
- name: Publish @RC to npm | |
if: contains(github.ref, 'RC') | |
run: npm publish --tag RC | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
- name: Publish @latest to npm | |
if: contains(github.ref, 'RC') == false #'!contains()'' doesn't work lol | |
run: npm publish | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
# Set up Node again, this time using GitHub as the publish target | |
- uses: actions/setup-node@v1 | |
with: | |
node-version: lts/* | |
registry-url: https://npm.pkg.github.com/ | |
# Change package org (@smallwins on GitHub vs @begin on NPM) | |
- name: Change package name | |
run: scripts/change-package-name @beginner-corp/data | |
# Publish to GitHub | |
- name: Publish @RC to GitHub | |
if: contains(github.ref, 'RC') | |
run: npm publish --tag RC | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Publish @latest to GitHub | |
if: contains(github.ref, 'RC') == false #'!contains()'' doesn't work lol | |
run: npm publish | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Notify | |
uses: homoluctus/slatify@master | |
if: always() | |
with: | |
type: ${{ job.status }} | |
job_name: '*Publish*' | |
url: ${{ secrets.SLACK_WEBHOOK }} | |
commit: true | |
token: ${{ secrets.GITHUB_TOKEN }} |