A quick demo showing how to use GitHub Actions to build, package, and publish Node.js modules to the NPM and GitHub package registries.

A quick demo showing how to use GitHub Actions to build, package, and publish Node.js modules to the NPM and GitHub package registries.

This repo ULL-ESIT-PL-1920/lexer-generator contains the solution code for a Lab for the subject “Procesadores de Lenguajes” (Language Processors) at Grado de Informatica de la ULL.

In branch github-action-npm I follow the YouTube tutorial A quick demo showing how to use GitHub Actions to build, package, and publish Node.js modules to the NPM and GitHub package registries.

Initially:

# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages

name: Node.js Package

on:
  release:
    types: [created]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
        with:
          node-version: 12
      - run: npm ci
      - run: npm test

  publish-npm:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
        with:
          node-version: 12
          registry-url: https://registry.npmjs.org/
      - run: npm ci
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: $

  publish-gpr:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
        with:
          node-version: 12
          registry-url: https://npm.pkg.github.com/
      - run: npm ci
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: $

release

Runs your workflow anytime the release event occurs. More than one activity type triggers this event. For information about the REST API, see “Releases” in the GitHub Developer documentation.

Webhook event payload Activity types GITHUB_SHA GITHUB_REF
release - published,
- unpublished
- created
- edited
- deleted
- prereleased
Last commit in the tagged release Tag of release

For example, you can run a workflow when a release has been published.

on:
  release:
    types: [published]

npm tokens