Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/actions-go/toolkit
A go implementation of https://github.com/actions/toolkit
https://github.com/actions-go/toolkit
actions automation cd ci github github-actions golang golang-package
Last synced: 5 days ago
JSON representation
A go implementation of https://github.com/actions/toolkit
- Host: GitHub
- URL: https://github.com/actions-go/toolkit
- Owner: actions-go
- License: mit
- Created: 2020-01-17T01:21:13.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2024-01-24T04:06:52.000Z (10 months ago)
- Last Synced: 2024-06-21T04:45:33.780Z (5 months ago)
- Topics: actions, automation, cd, ci, github, github-actions, golang, golang-package
- Language: Go
- Size: 96.7 KB
- Stars: 9
- Watchers: 3
- Forks: 1
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![GoDoc](https://godoc.org/github.com/actions-go/toolkit?status.svg)](https://godoc.org/github.com/actions-go/toolkit)
## 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](https://github.com/actions/toolkit)
Get started with the go-action-template!
## Packages
:heavy_check_mark: [github.com/actions-go/toolkit/core](core)
[![GoDoc](https://godoc.org/github.com/actions-go/toolkit/core?status.svg)](https://godoc.org/github.com/actions-go/toolkit/core)
Provides functions for inputs, outputs, results, logging, secrets and variables. Read more [here](https://godoc.org/github.com/actions-go/toolkit/core)
```bash
$ go get github.com/actions-go/core
```:hammer: [github.com/actions-go/toolkit/cache](cache)
[![GoDoc](https://godoc.org/github.com/actions-go/toolkit/cache?status.svg)](https://godoc.org/github.com/actions-go/toolkit/cache)
Provides functions for downloading and caching tools. e.g. setup-* actions. Read more [here](https://godoc.org/github.com/actions-go/toolkit/cache)
```bash
$ go get github.com/actions-go/cache
```:octocat: [github.com/actions-go/toolkit/github](github)
[![GoDoc](https://godoc.org/github.com/actions-go/toolkit/github?status.svg)](https://godoc.org/github.com/actions-go/toolkit/github)
Provides an authenticated GitHub client hydrated with the context that the current action is being run in. Read more [here](https://godoc.org/github.com/actions-go/toolkit/github)
```bash
$ go get github.com/actions-go/github
```## Creating an Action with the Toolkit
:question: [Choosing an action type](https://github.com/actions/toolkit/docs/action-types.md)
Outlines the differences and why you would want to create a JavaScript or a container based action.
:curly_loop: [Versioning](https://github.com/actions/toolkit/docs/action-versioning.md)
Actions are downloaded and run from the GitHub graph of repos. This contains guidance for versioning actions and safe releases.
:warning: [Problem Matchers](https://github.com/actions/toolkit/docs/problem-matchers.md)
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.
```go
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.
```javascript
...
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.```javascript
async function run() {
try {
const ms = core.getInput('milliseconds');
console.log(`Waiting ${ms} milliseconds ...`)
...
```
```javascript
PASS ./index.test.js
✓ throws invalid number
✓ wait 500 ms
✓ test runsTest 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.
```javascript
import * as core from '@actions/core';async function run() {
try {
const ms = core.getInput('milliseconds');
console.log(`Waiting ${ms} milliseconds ...`)
...
```
```javascript
PASS ./index.test.js
✓ throws invalid number
✓ wait 500 ms
✓ test runsTest 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.
```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.
```docker
FROM node:slim
COPY . .
RUN npm install --production
ENTRYPOINT ["node", "/lib/main.js"]
```
```javascript
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}`)
```