name: Publish NPM on: workflow_dispatch: inputs: package: required: true description: 'core, artifact, cache, exec, github, glob, http-client, 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: Set Node.js 16.x uses: actions/setup-node@v1 with: node-version: 16.x - run: npm install -g npm@latest - 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 }} - name: setup authentication run: echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc env: NPM_TOKEN: ${{ secrets.TOKEN }} - name: publish run: npm publish *.tgz - 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 }}