Skip to content

Schema

The JSON schema file is available here.

Each property section is described as follows:

  • Type: Type of the property. We use Array<{item type}> for arrays, Map<{key type}, {value type}> for objects.
  • Required: Whether the property is required.
  • Default: Default value of the property.
  • Options: Available values of the property.
  • Template: Whether the property is a template string. Only for string or types containing strings.
  • Description: Description of the property.

Project

concurrency

  • Type: integer
  • Required: no
  • Default: Number of available CPU cores
  • Description: Task concurrency. Valid only in a root project config.
yaml
concurrency: 4

depends_on

  • Type: Array<DependsOnConfig>
  • Required: no
  • Default: []
  • Description: Dependency tasks for all the project tasks.
yaml
depends_on:
  - '#install'

env

  • Type: Map<string, string>
  • Required: no
  • Default: {}
  • Template: yes
  • Description: Environment variables for all the project tasks.
yaml
env:
  TZ: Asia/Tokyo

env_files

  • Type: Array<string>
  • Required: no
  • Default: []
  • Template: yes
  • Description: Dotenv files for all the project tasks. In case of duplicated environment variables, the latter one takes precedence.
yaml
env_files:
  - .env
  - .env.local

gantt_file

  • Type: string
  • Required: no
  • Template: no
  • Description: Gantt chart output file path. Valid only in a root project config.
yaml
gantt_file: gantt.svg

includes

  • Type: Array<string>
  • Required: no
  • Default: []
  • Template: yes
  • Description: Additional config files to be included.
yaml
includes:
  - common-vars.yml
  - common-tasks.yml

log

  • Type: LogConfig
  • Required: no
  • Default: {"file":null,"level":"info"}
  • Description: Log configuration. Valid only in a root project config.
yaml
log:
  level: debug
  file: "{{ root_dir }}/firepit.log"

projects

  • Type: Map<string, string>
  • Required: no
  • Default: {}
  • Template: no
  • Description: Child projects. Valid only in a root project config.
yaml
projects:
  client: packages/client
  server: packages/server

shell

  • Type: ShellConfig
  • Required: no
  • Default: {"args":["-c"],"command":"bash"}
  • Description: Shell configuration for all the project tasks.
yaml
shell:
  command: "bash"
  args: ["-eux", "-c"]

tasks

  • Type: Map<string, TaskConfig>
  • Required: no
  • Default: {}
  • Template: no
  • Description: Task definitions.

ui

  • Type: UI
  • Required: no
  • Default: cui
  • Description: UI configuration. Valid only in a root project config.
yaml
ui: cui

vars

  • Type: Map<string, any>
  • Required: no
  • Default: {}
  • Template: yes
  • Description: Template variables for all the project tasks.
yaml
vars:
  aws_account_id: 123456789012
  aws_region: ap-northeast-1
  ecr_registry: "{{ aws_account_id }}.dkr.ecr.{{ aws_region }}.amazonaws.com"

working_dir

  • Type: string
  • Required: no
  • Default: .
  • Template: yes
  • Description: Working directory for all the project tasks.
yaml
working_dir: src

DependsOnConfig

DependsOnConfigStruct

cascade

  • Type: boolean
  • Required: no
  • Default: true
  • Description: Whether the task restarts if this dependency task restarts.

task

  • Type: string
  • Required: yes
  • Template: yes
  • Description: Dependency task name

vars

  • Type: Map<string, any>
  • Required: no
  • Default: {}
  • Template: yes
  • Description: Variables to override the dependency task vars.

ExecProbeConfig

command

  • Type: string
  • Required: yes
  • Template: yes
  • Description: Command to check if the service is ready

env

  • Type: Map<string, string>
  • Required: no
  • Default: {}
  • Template: yes
  • Description: Environment variables. Merged with the task env.

env_files

  • Type: Array<string>
  • Required: no
  • Default: []
  • Template: yes
  • Description: Dotenv files. Merged with the task env_files.

interval

  • Type: integer
  • Required: no
  • Default: 5
  • Description: Interval in seconds. The command will run interval seconds after the task is started, and then again interval seconds after each previous check completes.

retries

  • Type: integer
  • Required: no
  • Default: 3
  • Description: Number of consecutive readiness-check failures allowed before giving up.

shell

  • Type: ShellConfig
  • Required: no
  • Description: Shell configuration

start_period

  • Type: integer
  • Required: no
  • Default: 0
  • Description: Initialization period in seconds. Probe failure during that period will not be counted towards the maximum number of retries.

timeout

  • Type: integer
  • Required: no
  • Default: 5
  • Description: Timeout in seconds

working_dir

  • Type: string
  • Required: no
  • Template: yes
  • Description: Working directory

HealthCheckConfig

LogConfig

file

  • Type: string
  • Required: no
  • Template: no
  • Description: Log file path.

level

  • Type: string
  • Required: no
  • Default: info
  • Template: no
  • Description: Log level. Valid values: error, warn, info, debug, trace

LogProbeConfig

log

  • Type: string
  • Required: yes
  • Template: yes
  • Description: Log regex pattern to determine the task service is ready

timeout

  • Type: integer
  • Required: no
  • Default: 20
  • Description: Timeout in seconds

Restart

  • Type: string
  • Options: always, on-failure, never
  • Template: no

ServiceConfig

ServiceConfigStruct

healthcheck

restart

  • Type: Restart
  • Required: no
  • Default: never
  • Description: Restart policy

ShellConfig

args

  • Type: Array<string>
  • Required: no
  • Default: ["-c"]
  • Template: no
  • Description: Arguments of the shell command.

command

  • Type: string
  • Required: no
  • Default: bash
  • Template: no
  • Description: Shell command.

TaskConfig

command

  • Type: string
  • Required: no
  • Template: yes
  • Description: Command to run

depends_on

  • Type: Array<DependsOnConfig>
  • Required: no
  • Default: []
  • Description: Dependency tasks

description

  • Type: string
  • Required: no
  • Template: no
  • Description: Description

env

  • Type: Map<string, string>
  • Required: no
  • Default: {}
  • Template: yes
  • Description: Environment variables. Merged with the project env.

env_files

  • Type: Array<string>
  • Required: no
  • Default: []
  • Template: yes
  • Description: Dotenv files. Merged with the project env_files.

inputs

  • Type: Array<string>
  • Required: no
  • Default: []
  • Template: no
  • Description: Inputs file glob patterns

label

  • Type: string
  • Required: no
  • Template: yes
  • Description: Label to display instead of the task name.

outputs

  • Type: Array<string>
  • Required: no
  • Default: []
  • Template: no
  • Description: Output file glob patterns

service

  • Type: ServiceConfig
  • Required: no
  • Description: Service configurations

shell

  • Type: ShellConfig
  • Required: no
  • Description: Shell configuration

vars

  • Type: Map<string, any>
  • Required: no
  • Default: {}
  • Template: yes
  • Description: Template variables. Merged with the project vars. Can be used at label, command, working_dir, env, env_files, depends_on, depends_on.{task, vars}, service.healthcheck.log and service.healthcheck.exec.{command, working_dir, env, env_files}

working_dir

  • Type: string
  • Required: no
  • Template: yes
  • Description: Working directory
yaml
working_dir: dist

UI

  • Type: string
  • Options: cui, tui
  • Template: no