2019-05-16 20:40:21 +00:00
# `@actions/core`
2019-05-17 03:36:45 +00:00
> Core functions for setting results, logging, registering secrets and exporting variables across actions
2019-05-16 20:40:21 +00:00
## Usage
2019-08-04 13:00:04 +00:00
#### Inputs/Outputs
You can use this library to get inputs or set outputs:
2019-08-21 05:15:05 +00:00
```js
2019-08-04 13:00:04 +00:00
const core = require('@actions/core');
const myInput = core.getInput('inputName', { required: true });
// Do stuff
core.setOutput('outputKey', 'outputVal');
```
2019-08-24 13:17:35 +00:00
#### Exporting variables
2019-08-04 13:00:04 +00:00
2019-08-24 13:17:35 +00:00
You can also export variables for future steps. Variables get set in the environment.
2019-08-04 13:00:04 +00:00
2019-08-21 05:15:05 +00:00
```js
2019-08-04 13:00:04 +00:00
const core = require('@actions/core');
// Do stuff
core.exportVariable('envVar', 'Val');
```
#### PATH Manipulation
You can explicitly add items to the path for all remaining steps in a workflow:
2019-08-21 05:16:47 +00:00
```js
2019-08-04 13:00:04 +00:00
const core = require('@actions/core');
core.addPath('pathToTool');
```
#### Exit codes
2019-08-06 13:12:30 +00:00
You should use this library to set the failing exit code for your action:
2019-08-04 13:00:04 +00:00
2019-08-21 05:15:05 +00:00
```js
2019-08-04 13:00:04 +00:00
const core = require('@actions/core');
try {
2019-08-06 13:12:30 +00:00
// Do stuff
2019-08-04 13:00:04 +00:00
}
catch (err) {
// setFailed logs the message and sets a failing exit code
core.setFailed(`Action failed with error ${err}`);
}
```
#### Logging
2019-08-12 21:00:55 +00:00
Finally, this library provides some utilities for logging. Note that debug logging is hidden from the logs by default. This behavior can be toggled by enabling the [Step Debug Logs ](../../docs/action-debugging.md#step-debug-logs ).
2019-08-04 13:00:04 +00:00
2019-08-21 05:15:05 +00:00
```js
2019-08-04 13:00:04 +00:00
const core = require('@actions/core');
const myInput = core.getInput('input');
try {
core.debug('Inside try block');
if (!myInput) {
2019-08-21 19:31:44 +00:00
core.warning('myInput was not set');
2019-08-04 13:00:04 +00:00
}
// Do stuff
}
catch (err) {
2019-08-13 22:13:12 +00:00
core.error(`Error ${err}, action may still succeed though`);
2019-08-04 13:00:04 +00:00
}
```
2019-08-29 02:35:27 +00:00
This library can also wrap chunks of output in foldable groups.
```js
const core = require('@actions/core')
// Manually wrap output
2019-08-29 02:36:17 +00:00
core.startGroup('Do some function')
2019-08-29 02:35:27 +00:00
doSomeFunction()
2019-08-29 02:36:17 +00:00
core.endGroup()
2019-08-29 02:35:27 +00:00
// Wrap an asynchronous function call
const result = await core.group('Do something async', async () => {
const response = await doSomeHTTPRequest()
return response
})
2019-10-03 04:41:30 +00:00
```
#### Action state
You can use this library to save state and get state for sharing information between a given wrapper action:
**action.yml**
```yaml
name: 'Wrapper action sample'
inputs:
name:
default: 'GitHub'
runs:
using: 'node12'
main: 'main.js'
post: 'cleanup.js'
```
In action's `main.js` :
```js
const core = require('@actions/core');
core.saveState("pidToKill", 12345);
```
In action's `cleanup.js` :
```js
const core = require('@actions/core');
var pid = core.getState("pidToKill");
kill(pid);
2019-08-29 02:35:27 +00:00
```