javascript-action/README.md

2.2 KiB

Create a JavaScript Action

🚀 Use this template to bootstrap the creation of a JavaScript action with tests, linting, a validation workflow and publishing.

This walk through takes you through creation, testing and publishing the action.

Create an action from this template

Click the Use this Template and provide the new repo details for your action

Code in Master

$ npm install
$ npm test

 PASS  ./index.test.js
  ✓ throws invalid number (3ms)wait 500 ms (504ms)test runs (95ms)

...

Change actions.yml

The actions.yml contains defines the inputs and output for your action.

Update the actions.yml with your name, description, inputs and outputs for your action.

See the documentation

Change the Code

Most toolkit and CI/CD operations involve async operations so the action is run in an async function.

const core = require('@actions/core');
...

async function run() {
  try { 
      ...
  } 
  catch (error) {
    core.setFailed(error.message);
  }
}

run()

See the toolkit documentation for the various packages.

Publish to a distribution branch

Actions are run from GitHub repos. We will create a releases branch and only checkin production modules (core in this case).

Comment out node_modules in .gitignore and create a releases/v1 branch

# Dependency directories
# node_modules/
$ git checkout -b releases/v1
$ git commit -a -m "prod dependencies"
$ npm prune --production
$ git add node_modules/
$ git commit -a -m "prod dependencies"
$ git push origin releases/v1

See the versioning documentation

Validate

You can now validate the action by referencing the releases/v1 branch

uses: actions/javascript-action@releases/v1
with:
  milliseconds: 1000

Usage:

After testing you can create a v1 tag to reference the stable and tested action

uses: actions/javascript-action@v1
with:
  milliseconds: 1000