yaml
type: "io.kestra.core.tasks.scripts.Node"

Execute a Node.js script.

This task is deprecated, please use the io.kestra.plugin.scripts.node.Script or io.kestra.plugin.scripts.node.Commands task instead.

With the Node task, you can execute a full JavaScript script. The task will create a temporary folder for each task, and allows you to install some npm packages defined in an optional package.json file.

By convention, you need to define at least a main.js file in inputFiles that will be the script used. You can also add as many JavaScript files as you need in inputFiles.

The outputs & metrics from your Node.js script can be used by others tasks. In order to make things easy, we inject a node package directly on the working directory.Here is an example usage:

javascript
const Kestra = require("./kestra");
Kestra.outputs({test: 'value', int: 2, bool: true, float: 3.65});
Kestra.counter('count', 1, {tag1: 'i', tag2: 'win'});
Kestra.timer('timer1', (callback) => { setTimeout(callback, 1000) }, {tag1: 'i', tag2: 'lost'});
Kestra.timer('timer2', 2.12, {tag1: 'i', tag2: 'destroy'});

Examples

Execute a Node.js script.

yaml
id: "node"
type: "io.kestra.core.tasks.scripts.Node"
inputFiles:
  main.js: |
    const Kestra = require("./kestra");
    const fs = require('fs')
    const result = fs.readFileSync(process.argv[2], "utf-8")
    console.log(JSON.parse(result).status)
    const axios = require('axios')
    axios.get('http://google.fr').then(d => { console.log(d.status); Kestra.outputs({'status': d.status, 'text': d.data})})
    console.log(require('./mymodule').value)
  data.json: |
    {"status": "OK"}
  mymodule.js: |
    module.exports.value = 'hello world'
  package.json: |
    {
      "name": "tmp",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "dependencies": {
          "axios": "^0.20.0"
      },
      "devDependencies": {},
      "scripts": {
          "test": "echo `Error: no test specified` && exit 1"
      },
      "author": "",
      "license": "ISC"
    }
args:
  - data.json
warningOnStdErr: false

Execute a Node.js script with an input file from Kestra's internal storage created by a previous task.

yaml
id: "node"
type: "io.kestra.core.tasks.scripts.Node"
inputFiles:
  data.csv: {{ outputs.previousTaskId.uri }}
  main.js: |
    const fs = require('fs')
    const result = fs.readFileSync('data.csv', 'utf-8')
    console.log(result)

Properties

exitOnFailed

  • Type: boolean
  • Dynamic:
  • Required: ✔️
  • Default: true

Exit if any non-true value is returned.

This tells bash that it should exit the script if any statement returns a non-true return value. Setting this to true helps catch cases where a command fails and the script continues to run anyway.

interpreter

  • Type: string
  • Dynamic:
  • Required: ✔️
  • Default: /bin/sh
  • Min length: 1

Interpreter to use when launching the process.

runner

  • Type: string
  • Dynamic:
  • Required: ✔️
  • Default: PROCESS
  • Possible Values:
    • PROCESS
    • DOCKER

The task runner.

warningOnStdErr

  • Type: boolean
  • Dynamic:
  • Required: ✔️
  • Default: true

Whether to set the execution state to WARNING if any stdErr is emitted.

args

  • Type: array
  • SubType: string
  • Dynamic: ✔️
  • Required:

Node command args.

Arguments list to pass to main JavaScript script.

dockerOptions

Docker options when using the DOCKER runner.

env

  • Type: object
  • SubType: string
  • Dynamic: ✔️
  • Required:

One or more additional environment variable(s) to add to the task run.

files

  • Type: array
  • SubType: string
  • Dynamic: ✔️
  • Required:

Deprecated The list of files that will be uploaded to Kestra's internal storage.

Use outputFiles instead.

inputFiles

  • Type: object
  • SubType: string
  • Dynamic: ✔️
  • Required:

Input files are extra files that will be available in the script's working directory.

Define the files as a map of a file name being the key, and the value being the file's content. Alternatively, configure the files as a JSON string with the same key/value structure as the map. In both cases, you can either specify the file's content inline, or reference a file from Kestra's internal storage by its URI, e.g. a file from an input, output of a previous task, or a Namespace File.

interpreterArgs

  • Type: array
  • SubType: string
  • Dynamic:
  • Required:
  • Default: [ "-c" ]

Interpreter arguments to be used.

nodePath

  • Type: string
  • Dynamic:
  • Required:
  • Default: node

The node interpreter to use.

Set the node interpreter path to use.

npmPath

  • Type: string
  • Dynamic:
  • Required:
  • Default: npm

The npm binary to use.

Set the npm binary path for node dependencies setup.

outputDirs

  • Type: array
  • SubType: string
  • Dynamic:
  • Required:

List of output directories that will be uploaded to Kestra's internal storage.

List of keys that will generate temporary directories. This property can be used with a special variable named outputDirs.key. If you add a file with "myDir", you can use the special var echo 1 >> {[ outputDirs.myDir }}/file1.txt and echo 2 >> {[ outputDirs.myDir }}/file2.txt, and both the files will be uploaded to Kestra's internal storage. You can reference them in other tasks using .

outputFiles

  • Type: array
  • SubType: string
  • Dynamic:
  • Required:

Output file list that will be uploaded to Kestra's internal storage.

List of keys that will generate temporary files. This property can be used with a special variable named outputFiles.key. If you add a file with "first", you can use the special var echo 1 >> {[ outputFiles.first }}, and on other tasks, you can reference it using .

outputsFiles

  • Type: array
  • SubType: string
  • Dynamic:
  • Required:

Deprecated Output files.

Use outputFiles instead.

Outputs

exitCode

  • Type: integer
  • Required: ✔️
  • Default: 0

files

  • Type: object
  • SubType: string
  • Required:

outputFiles

  • Type: object
  • SubType: string
  • Required:

stdErrLineCount

  • Type: integer
  • Required:
  • Default: 0

stdOutLineCount

  • Type: integer
  • Required:
  • Default: 0

vars

  • Type: object
  • Required:

Definitions

io.kestra.plugin.scripts.runner.docker.Cpu

  • cpus
    • Type: integer
    • Dynamic:
    • Required:

io.kestra.plugin.scripts.runner.docker.Memory

  • kernelMemory
    • Type: string
    • Dynamic: ✔️
    • Required:
  • memory
    • Type: string
    • Dynamic: ✔️
    • Required:
  • memoryReservation
    • Type: string
    • Dynamic: ✔️
    • Required:
  • memorySwap
    • Type: string
    • Dynamic: ✔️
    • Required:
  • memorySwappiness
    • Type: string
    • Dynamic: ✔️
    • Required:
  • oomKillDisable
    • Type: boolean
    • Dynamic:
    • Required:

io.kestra.plugin.scripts.exec.scripts.models.DockerOptions

  • image
    • Type: string
    • Dynamic: ✔️
    • Required: ✔️
    • Min length: 1
  • config
    • Type:
      • string
      • object
    • Dynamic: ✔️
    • Required:
  • cpu
    • Type: Cpu
    • Dynamic:
    • Required:
  • credentials
  • deviceRequests
  • entryPoint
    • Type: array
    • SubType: string
    • Dynamic: ✔️
    • Required:
  • extraHosts
    • Type: array
    • SubType: string
    • Dynamic: ✔️
    • Required:
  • host
    • Type: string
    • Dynamic: ✔️
    • Required:
  • memory
    • Type: Memory
    • Dynamic:
    • Required:
  • networkMode
    • Type: string
    • Dynamic: ✔️
    • Required:
  • pullPolicy
    • Type: string
    • Dynamic:
    • Required:
    • Default: ALWAYS
    • Possible Values:
      • IF_NOT_PRESENT
      • ALWAYS
      • NEVER
  • shmSize
    • Type: string
    • Dynamic: ✔️
    • Required:
  • user
    • Type: string
    • Dynamic: ✔️
    • Required:
  • volumes
    • Type: array
    • SubType: string
    • Dynamic: ✔️
    • Required:

io.kestra.plugin.scripts.runner.docker.Credentials

  • auth
    • Type: string
    • Dynamic: ✔️
    • Required:
  • identityToken
    • Type: string
    • Dynamic: ✔️
    • Required:
  • password
    • Type: string
    • Dynamic: ✔️
    • Required:
  • registry
    • Type: string
    • Dynamic: ✔️
    • Required:
  • registryToken
    • Type: string
    • Dynamic: ✔️
    • Required:
  • username
    • Type: string
    • Dynamic: ✔️
    • Required:

io.kestra.plugin.scripts.runner.docker.DeviceRequest

  • capabilities
    • Type: array
    • SubType: array
    • Dynamic:
    • Required:
  • count
    • Type: integer
    • Dynamic:
    • Required:
  • deviceIds
    • Type: array
    • SubType: string
    • Dynamic: ✔️
    • Required:
  • driver
    • Type: string
    • Dynamic: ✔️
    • Required:
  • options
    • Type: object
    • SubType: string
    • Dynamic:
    • Required: