Skip to content

actions-go/toolkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GoDoc

GitHub Actions Go (aka golang) Toolkit

The GitHub Actions Go ToolKit provides a set of packages to make creating actions easier.

This toolkit is a pure go port of the official @actions/toolkit


Get started with the go-action-template!


Packages

✔️ github.com/actions-go/toolkit/core

GoDoc

Provides functions for inputs, outputs, results, logging, secrets and variables. Read more here

$ go get github.com/actions-go/core

🔨 github.com/actions-go/toolkit/cache

GoDoc

Provides functions for downloading and caching tools. e.g. setup-* actions. Read more here

$ go get github.com/actions-go/cache

:octocat: github.com/actions-go/toolkit/github

GoDoc

Provides an authenticated GitHub client hydrated with the context that the current action is being run in. Read more here

$ go get github.com/actions-go/github

Creating an Action with the Toolkit

Choosing an action type

Outlines the differences and why you would want to create a JavaScript or a container based action.



Versioning

Actions are downloaded and run from the GitHub graph of repos. This contains guidance for versioning actions and safe releases.

⚠️ Problem Matchers

Problem Matchers are a way to scan the output of actions for a specified regex pattern and surface that information prominently in the UI.

Illustrates how to create a simple hello world javascript action.

import "github.com/actions-go/toolkit/core"

func main() {
    whoToGreet := core.GetInput("who-to-greet")
    fmt.Println("Hello", whoToGreet)
}

Illustrates how to create a simple hello world javascript action.

...
  const nameToGreet = core.getInput('who-to-greet');
  console.log(`Hello ${nameToGreet}!`);
...

Walkthrough and template for creating a JavaScript Action with tests, linting, workflow, publishing, and versioning.

async function run() {
  try { 
    const ms = core.getInput('milliseconds');
    console.log(`Waiting ${ms} milliseconds ...`)
    ...
PASS ./index.test.js
   throws invalid number 
   wait 500 ms 
   test runs

Test Suites: 1 passed, 1 total    
Tests:       3 passed, 3 total

Walkthrough creating a TypeScript Action with compilation, tests, linting, workflow, publishing, and versioning.

import * as core from '@actions/core';

async function run() {
  try {
    const ms = core.getInput('milliseconds');
    console.log(`Waiting ${ms} milliseconds ...`)
    ...
PASS ./index.test.js
   throws invalid number 
   wait 500 ms 
   test runs

Test Suites: 1 passed, 1 total    
Tests:       3 passed, 3 total


Create an action that is delivered as a container and run with docker.

FROM alpine:3.10
COPY LICENSE README.md /
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

Create an action that is delivered as a container which uses the toolkit. This example uses the GitHub context to construct an Octokit client.

FROM node:slim
COPY . .
RUN npm install --production
ENTRYPOINT ["node", "/lib/main.js"]
const myInput = core.getInput('myInput');
core.debug(`Hello ${myInput} from inside a container`);

const context = github.context;
console.log(`We can even get context data, like the repo: ${context.repo.repo}`)