Skip to content

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"funcmain() {
whoToGreet:=core.GetInput("who-to-greet")
fmt.Println("Hello", whoToGreet)
}

Illustrates how to create a simple hello world javascript action.

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

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

asyncfunctionrun(){try{constms=core.getInput('milliseconds');console.log(`Waiting ${ms} milliseconds ...`)...
PASS./index.test.jsthrowsinvalidnumberwait500mstestruns
Test Suites: 1passed,1total Tests: 3passed,3total

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

import*ascorefrom'@actions/core';asyncfunctionrun(){try{constms=core.getInput('milliseconds');console.log(`Waiting ${ms} milliseconds ...`)...
PASS./index.test.jsthrowsinvalidnumberwait500mstestruns
Test Suites: 1passed,1total Tests: 3passed,3total


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"]
constmyInput=core.getInput('myInput');core.debug(`Hello ${myInput} from inside a container`);constcontext=github.context;console.log(`We can even get context data, like the repo: ${context.repo.repo}`)

Releases

Packages

Used by

Contributors

Languages