2021-04-06 17:37:17 +00:00
name : Publish NPM
on :
workflow_dispatch :
inputs :
package :
required : true
description : 'core, artifact, cache, exec, github, glob, io, tool-cache'
jobs :
test :
runs-on : macos-latest
steps :
- name : setup repo
uses : actions/checkout@v2
- name : verify package exists
run : ls packages/${{ github.event.inputs.package }}
- name : npm install
run : npm install
- name : bootstrap
run : npm run bootstrap
- name : build
run : npm run build
- name : test
run : npm run test
- name : pack
run : npm pack
working-directory : packages/${{ github.event.inputs.package }}
- name : upload artifact
uses : actions/upload-artifact@v2
with :
name : ${{ github.event.inputs.package }}
path : packages/${{ github.event.inputs.package }}/*.tgz
publish :
runs-on : macos-latest
needs : test
environment : npm-publish
steps :
- name : download artifact
uses : actions/download-artifact@v2
with :
name : ${{ github.event.inputs.package }}
2021-04-06 18:41:33 +00:00
- name : setup authentication
run : echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc
2021-04-06 17:37:17 +00:00
env :
NPM_TOKEN : ${{ secrets.TOKEN }}
2021-04-06 18:41:33 +00:00
- name : publish
run : npm publish *.tgz
2021-04-06 17:37:17 +00:00
- name : notify slack on failure
if : failure()
run : |
curl -X POST -H 'Content-type : application/json' --data '{"text":":pb__failed: Failed to publish a new version of ${{ github.event.inputs.package }}"}' $SLACK_WEBHOOK
env :
SLACK_WEBHOOK : ${{ secrets.SLACK }}
- name : notify slack on success
if : success()
run : |
curl -X POST -H 'Content-type : application/json' --data '{"text":":dance: Successfully published a new version of ${{ github.event.inputs.package }}"}' $SLACK_WEBHOOK
env :
SLACK_WEBHOOK : ${{ secrets.SLACK }}