toolkit

package module
v0.0.0-...-3973644 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 22, 2023 License: MIT Imports: 0 Imported by: 0

README

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.

Hello World Go Action

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)
}

Hello World JavaScript Action

Illustrates how to create a simple hello world javascript action.

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

JavaScript Action Walkthrough

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

TypeScript Action Walkthrough

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


Docker Action Walkthrough

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"]

Docker Action Walkthrough with Octokit

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}`)    

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL