1
0
Fork 0
toolkit/README.md

183 lines
4.6 KiB
Markdown
Raw Permalink Normal View History

2019-07-10 18:02:56 +00:00
<p align="center">
<img src="res/at-logo.png">
</p>
2019-08-12 19:09:43 +00:00
<p align="center">
<a href="https://github.com/actions/toolkit"><img alt="GitHub Actions status" src="https://github.com/actions/toolkit/workflows/toolkit-unit-tests/badge.svg"></a>
2019-08-12 19:09:43 +00:00
</p>
2019-10-03 16:45:11 +00:00
2019-08-24 13:24:48 +00:00
## GitHub Actions Toolkit
2019-07-10 18:02:56 +00:00
2019-10-02 21:59:33 +00:00
The GitHub Actions ToolKit provides a set of packages to make creating actions easier.
2019-04-20 14:56:56 +00:00
2019-10-03 16:45:11 +00:00
<br/>
<h3 align="center">Get started with the <a href="https://github.com/actions/javascript-action">javascript-action template</a>!</h3>
<br/>
2019-04-20 14:56:56 +00:00
## Packages
2019-10-02 21:59:33 +00:00
:heavy_check_mark: [@actions/core](packages/core)
2019-10-02 21:59:33 +00:00
Provides functions for inputs, outputs, results, logging, secrets and variables. Read more [here](packages/core)
```bash
$ npm install @actions/core --save
```
<br/>
:runner: [@actions/exec](packages/exec)
Provides functions to exec cli tools and process output. Read more [here](packages/exec)
```bash
$ npm install @actions/exec --save
```
<br/>
:pencil2: [@actions/io](packages/io)
Provides disk i/o functions like cp, mv, rmRF, find etc. Read more [here](packages/io)
```bash
$ npm install @actions/io --save
```
<br/>
:hammer: [@actions/tool-cache](packages/tool-cache)
Provides functions for downloading and caching tools. e.g. setup-* actions. Read more [here](packages/tool-cache)
```bash
$ npm install @actions/tool-cache --save
```
<br/>
:octocat: [@actions/github](packages/github)
Provides an Octokit client hydrated with the context that the current action is being run in. Read more [here](packages/github)
```bash
$ npm install @actions/github --save
```
<br/>
2019-04-22 15:46:19 +00:00
## Creating an Action with the Toolkit
2019-04-22 15:46:19 +00:00
2019-10-02 21:59:33 +00:00
:question: [Choosing an action type](docs/action-types.md)
Outlines the differences and why you would want to create a JavaScript or a container based action.
<br/>
<br/>
2019-10-03 16:45:11 +00:00
:curly_loop: [Versioning](docs/action-versioning.md)
Actions are downloaded and run from the GitHub graph of repos. This contains guidance for versioning actions and safe releases.
<br/>
<br/>
2019-12-12 18:43:34 +00:00
:warning: [Problem Matchers](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.
<br/>
<br/>
2019-10-03 17:51:11 +00:00
<h3><a href="https://github.com/actions/hello-world-javascript-action">Hello World JavaScript Action</a></h3>
2019-10-02 21:59:33 +00:00
Illustrates how to create a simple hello world javascript action.
```javascript
...
const nameToGreet = core.getInput('who-to-greet');
console.log(`Hello ${nameToGreet}!`);
...
```
<br/>
2019-10-03 17:51:11 +00:00
<h3><a href="https://github.com/actions/javascript-action">JavaScript Action Walkthrough</a></h3>
2019-10-02 21:59:33 +00:00
2019-10-03 17:51:11 +00:00
Walkthrough and template for creating a JavaScript Action with tests, linting, workflow, publishing, and versioning.
2019-10-02 21:59:33 +00:00
2019-10-03 16:45:11 +00:00
```javascript
async function run() {
try {
const ms = core.getInput('milliseconds');
console.log(`Waiting ${ms} milliseconds ...`)
...
```
```javascript
2019-10-02 21:59:33 +00:00
PASS ./index.test.js
✓ throws invalid number
✓ wait 500 ms
✓ test runs
Test Suites: 1 passed, 1 total
Tests: 3 passed, 3 total
2019-10-03 16:45:11 +00:00
```
2019-10-02 21:59:33 +00:00
<br/>
2019-10-03 17:51:11 +00:00
<h3><a href="https://github.com/actions/typescript-action">TypeScript Action Walkthrough</a></h3>
2019-10-02 21:59:33 +00:00
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 ...`)
...
2019-10-03 16:45:11 +00:00
```
```javascript
PASS ./index.test.js
✓ throws invalid number
✓ wait 500 ms
✓ test runs
2019-10-02 21:59:33 +00:00
2019-10-03 16:45:11 +00:00
Test Suites: 1 passed, 1 total
Tests: 3 passed, 3 total
2019-10-02 21:59:33 +00:00
```
<br/>
<br/>
2019-10-03 17:51:11 +00:00
<h3><a href="docs/container-action.md">Docker Action Walkthrough</a></h3>
2019-10-02 21:59:33 +00:00
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"]
```
<br/>
2019-04-22 15:46:19 +00:00
2019-10-03 17:51:11 +00:00
<h3><a href="https://github.com/actions/container-toolkit-action">Docker Action Walkthrough with Octokit</a></h3>
2019-09-11 07:35:39 +00:00
2019-10-02 21:59:33 +00:00
Create an action that is delivered as a container which uses the toolkit. This example uses the GitHub context to construct an Octokit client.
2019-09-11 07:35:39 +00:00
2019-10-03 16:45:11 +00:00
```docker
FROM node:slim
COPY . .
RUN npm install --production
ENTRYPOINT ["node", "/lib/main.js"]
```
2019-10-02 21:59:33 +00:00
```javascript
2019-10-03 16:45:11 +00:00
const myInput = core.getInput('myInput');
core.debug(`Hello ${myInput} from inside a container`);
2019-04-22 15:46:19 +00:00
2019-10-03 16:45:11 +00:00
const context = github.context;
console.log(`We can even get context data, like the repo: ${context.repo.repo}`)
2019-10-02 21:59:33 +00:00
```
<br/>
2019-04-22 15:46:19 +00:00
## Contributing
2019-04-22 15:46:19 +00:00
2019-08-12 18:28:37 +00:00
We welcome contributions. See [how to contribute](docs/contribute.md).
2019-10-09 12:47:27 +00:00
## Code of Conduct
See [our code of conduct](CODE_OF_CONDUCT.md).