You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Use this template to bootstrap the creation of a TypeScript action.:rocket:
8
+
9
+
This template includes compilation support, tests, a validation workflow, publishing, and versioning guidance.
10
+
11
+
If you are new, there's also a simpler introduction. See the [Hello World JavaScript Action](https://github.com/actions/hello-world-javascript-action)
12
+
13
+
## Create an action from this template
14
+
15
+
Click the `Use this Template` and provide the new repo details for your action
16
+
17
+
## Code in Main
18
+
19
+
> First, you'll need to have a reasonably modern version of `node` handy. This won't work with versions older than 9, for instance.
20
+
21
+
Install the dependencies
22
+
```bash
23
+
$ npm install
24
+
```
25
+
26
+
Build the typescript and package it for distribution
27
+
```bash
28
+
$ npm run build && npm run package
29
+
```
30
+
31
+
Run the tests :heavy_check_mark:
32
+
```bash
33
+
$ npm test
34
+
35
+
PASS ./index.test.js
36
+
✓ throws invalid number (3ms)
37
+
✓ wait 500 ms (504ms)
38
+
✓ test runs (95ms)
39
+
40
+
...
41
+
```
42
+
43
+
## Change action.yml
44
+
45
+
The action.yml contains defines the inputs and output for your action.
46
+
47
+
Update the action.yml with your name, description, inputs and outputs for your action.
48
+
49
+
See the [documentation](https://help.github.com/en/articles/metadata-syntax-for-github-actions)
50
+
51
+
## Change the Code
52
+
53
+
Most toolkit and CI/CD operations involve async operations so the action is run in an async function.
54
+
55
+
```javascript
56
+
import*ascorefrom'@actions/core';
57
+
...
58
+
59
+
asyncfunctionrun() {
60
+
try {
61
+
...
62
+
}
63
+
catch (error) {
64
+
core.setFailed(error.message);
65
+
}
66
+
}
67
+
68
+
run()
69
+
```
70
+
71
+
See the [toolkit documentation](https://github.com/actions/toolkit/blob/master/README.md#packages) for the various packages.
72
+
73
+
## Publish to a distribution branch
74
+
75
+
Actions are run from GitHub repos so we will checkin the packed dist folder.
76
+
77
+
Then run [ncc](https://github.com/zeit/ncc) and push the results:
78
+
```bash
79
+
$ npm run package
80
+
$ git add dist
81
+
$ git commit -a -m "prod dependencies"
82
+
$ git push origin releases/v1
83
+
```
84
+
85
+
Note: We recommend using the `--license` option for ncc, which will create a license file for all of the production node modules used in your project.
86
+
87
+
Your action is now published! :rocket:
88
+
89
+
See the [versioning documentation](https://github.com/actions/toolkit/blob/master/docs/action-versioning.md)
90
+
91
+
## Validate
92
+
93
+
You can now validate the action by referencing `./` in a workflow in your repo (see [test.yml](.github/workflows/test.yml))
94
+
95
+
```yaml
96
+
uses: ./
97
+
with:
98
+
milliseconds: 1000
99
+
```
100
+
101
+
See the [actions tab](https://github.com/actions/typescript-action/actions) for runs of this action! :rocket:
102
+
103
+
## Usage:
104
+
105
+
After testing you can [create a v1 tag](https://github.com/actions/toolkit/blob/master/docs/action-versioning.md) to reference the stable and latest V1 action
0 commit comments