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
+
Install the dependencies
20
+
```bash
21
+
$ npm install
22
+
```
23
+
24
+
Build the typescript and package it for distribution
25
+
```bash
26
+
$ npm run build && npm run package
27
+
```
28
+
29
+
Run the tests :heavy_check_mark:
30
+
```bash
31
+
$ npm test
32
+
33
+
PASS ./index.test.js
34
+
✓ throws invalid number (3ms)
35
+
✓ wait 500 ms (504ms)
36
+
✓ test runs (95ms)
37
+
38
+
...
39
+
```
40
+
41
+
## Change action.yml
42
+
43
+
The action.yml contains defines the inputs and output for your action.
44
+
45
+
Update the action.yml with your name, description, inputs and outputs for your action.
46
+
47
+
See the [documentation](https://help.github.com/en/articles/metadata-syntax-for-github-actions)
48
+
49
+
## Change the Code
50
+
51
+
Most toolkit and CI/CD operations involve async operations so the action is run in an async function.
52
+
53
+
```javascript
54
+
import*ascorefrom'@actions/core';
55
+
...
56
+
57
+
asyncfunctionrun() {
58
+
try {
59
+
...
60
+
}
61
+
catch (error) {
62
+
core.setFailed(error.message);
63
+
}
64
+
}
65
+
66
+
run()
67
+
```
68
+
69
+
See the [toolkit documentation](https://github.com/actions/toolkit/blob/master/README.md#packages) for the various packages.
70
+
71
+
## Publish to a distribution branch
72
+
73
+
Actions are run from GitHub repos so we will checkin the packed dist folder.
74
+
75
+
Then run [ncc](https://github.com/zeit/ncc) and push the results:
76
+
```bash
77
+
$ npm run package
78
+
$ git add dist
79
+
$ git commit -a -m "prod dependencies"
80
+
$ git push origin releases/v1
81
+
```
82
+
83
+
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.
84
+
85
+
Your action is now published! :rocket:
86
+
87
+
See the [versioning documentation](https://github.com/actions/toolkit/blob/master/docs/action-versioning.md)
88
+
89
+
## Validate
90
+
91
+
You can now validate the action by referencing `./` in a workflow in your repo (see [test.yml](.github/workflows/test.yml))
92
+
93
+
```yaml
94
+
uses: ./
95
+
with:
96
+
milliseconds: 1000
97
+
```
98
+
99
+
See the [actions tab](https://github.com/actions/typescript-action/actions) for runs of this action! :rocket:
100
+
101
+
## Usage:
102
+
103
+
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