# Batch contexts

This page describes contexts the [Batch workflow](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax) can use in expressions for calculating YAML attribute values.

## Batch Contexts

| Context name | Description                                                                                                                                                                                                                                 |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `flow`       | Information about the main workflow settings, defaults, etc. See [`flow` context](#flow-context) for details.                                                                                                                               |
| `project`    | Information about the project. See [`project` context](#project-context) for details.                                                                                                                                                       |
| `params`     | A mapping of global workflow parameters. For more information, see [`params` context.](#params-context)                                                                                                                                     |
| `env`        | Contains environment variables set in workflow defaults. For more information, see [`env` context](#env-context) .                                                                                                                          |
| `tags`       | A set of job tags set in workflow defaults. See [`tags` context](#tags-context) for details.                                                                                                                                                |
| `volumes`    | Contains a mapping of volume definitions. For more information, see [`volumes` context](#volumes-context).                                                                                                                                  |
| `images`     | Contains a mapping of docker images from [workflow config](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#images). See [`images` context](#images-context) for details.                          |
| `strategy`   | Contains information about strategies from [flow defaults](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#defaults). See [`strategy` context](#strategy-context) for details.                    |
| `matrix`     | Contains combination data generated by the [`tasks.strategy.matrix`](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#tasks-strategy-matrix). See [`matrix` context](#matrix-context) for details. |
| `needs`      | Contains outputs generated by tasks from [`tasks.needs`](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#tasks-needs). See [`needs` context](#needs-context) for details.                         |
| `git`        | A mapping of the flow's workspace to a git repository. For more information, see [`git` context](#git-context).                                                                                                                             |

### `flow` context

The `flow`context contains information about the workflow: its ID, title, etc.

| Property name     | Type        | Description                                                                                                                                                                                                                                                                                                                                                               |
| ----------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `flow.flow_id`    | `str`       | The workflow's ID. It is automatically generated based on the workflow's YAML filename with a dropped suffix. You can override the property by setting the [`flow.id`](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#id) attribute.                                                                                           |
| `flow.project_id` | `str`       | The project's ID. It is automatically generated based on the name of the flow folder. You can override it using [`project.id`](https://docs.apolo.us/index/apolo-flow-reference/project-configuration-syntax#id) attribute. Check [the project configuration](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/project-configuration-syntax) for details. |
| `flow.workspace`  | `LocalPath` | A path to the workspace (the root folder of the flow).                                                                                                                                                                                                                                                                                                                    |
| `flow.title`      | `str`       | The workflow's title. Set the [`flow.title`](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#title) attribute to override the auto-calculated value.                                                                                                                                                                            |
| `flow.username`   | `str`       | Name of user who executed the workflow run.                                                                                                                                                                                                                                                                                                                               |

### `project` context

The `project`context contains information about the project: its ID, owner, etc.

| Property name          | Type  | Description                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ---------------------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `project.id`           | `str` | The project's ID. It is automatically generated based on the name of the flow folder. You can override it using [`project.id`](https://docs.apolo.us/index/apolo-flow-reference/project-configuration-syntax#id) attribute. Check [the project configuration](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/project-configuration-syntax) for details. This context property is an alias to `flow.project_id` . |
| `project.owner`        | `str` | The project's owner. See also: [the project configuration](https://docs.apolo.us/index/apolo-flow-reference/project-configuration-syntax#owner).                                                                                                                                                                                                                                                                                   |
| `project.project_name` | `str` | The platform project name. Set the [project.project\_name](https://docs.apolo.us/index/apolo-flow-reference/project-configuration-syntax#project_name) attribute to override the auto-calculated value.                                                                                                                                                                                                                            |

### `params` context

Parameter described in the [`params` attribute](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#params) .

| Property name         | Type  | Description                        |
| --------------------- | ----- | ---------------------------------- |
| `params.<param-name>` | `str` | The value of a specific parameter. |

### `env` context

The `env` context contains environment variables that have been set in the [workflow defaults](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#defaults-env). For more information about setting environment variables in your workflow, see "[Batch workflow syntax](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#batch-workflow)."

The `env` context syntax allows you to use the value of an environment variable in your workflow file. If you want to use the value of an environment variable inside a job, use your operating system's standard method for reading environment variables.

| Property name    | Type  | Description                                   |
| ---------------- | ----- | --------------------------------------------- |
| `env.<env-name>` | `str` | The value of a specific environment variable. |

### `tags` context

A set of job tags.

Tags available in this context are combined from system tags (`project:<project-id>`, `flow:<flow-id>`, `task:<task-id>`), and flow default tags (see [`defaults.tags` attribute](https://docs.apolo.us/index/apolo-flow-reference/live-workflow-syntax#defaults-tags)).

| Property name | Type       | Description                                                                  |
| ------------- | ---------- | ---------------------------------------------------------------------------- |
| `tags`        | `set[str]` | This context changes for each job. You can access this context from any job. |

### `volumes` context

Contains information about volumes defined in the [`volumes` section ](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#volumes)of a *batch* workflow.

| Property name                         | Type                  | Description                                                                                                                                                                                                                                                                                                     |
| ------------------------------------- | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `volumes.<volume-id>.id`              | `str`                 | The volume definition identifier. For more information, see [`volumes.<volume-id>` section](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#volumes-less-than-volume-id-greater-than).                                                                                |
| `volumes.<volume-id>.remote`          | `URL`                 | <p>Remote volume URI, e.g. <code>storage:path/to</code>.<br>For more information, see <a href="..#volumes-less-than-volume-id-greater-than-remote"><code>volumes.\<volume-id>.remote</code> attribute</a>.</p>                                                                                                  |
| `volumes.<volume-id>.mount`           | `RemotePath`          | <p>The path inside a job by which the volume should be mounted.</p><p>For more information, see <a href="..#volumes-less-than-volume-id-greater-than-mount"><code>volumes.\<volume-id>.mount</code> attribute</a>.</p>                                                                                          |
| `volumes.<volume-id>.read_only`       | `bool`                | <p><code>True</code> if the volume is mounted in read-only mode, <code>False</code> otherwise.</p><p>For more information, see <a href="..#volumes-less-than-volume-id-greater-than-read_only"><code>volumes.\<volume-id>.read\_only</code> attribute</a>.</p>                                                  |
| `volumes.<volume-id>.local`           | `None`                | In *batch* workflows, this property is always `None`.                                                                                                                                                                                                                                                           |
| `volumes.<volume-id>.full_local_path` | `LocalPath` or `None` | Full version of `local` property.                                                                                                                                                                                                                                                                               |
| `volumes.<volume-id>.ref`             | `str`                 | <p>A volume reference that can be used as a <a href="..#task-volumes"><code>task.volumes</code> item</a>. The calculated value looks like <code>storage:path/to:/mnt/path:rw</code>.</p><p>The value is assembled from the <code>remote</code>, <code>mount</code>, and <code>read\_only</code> properties.</p> |
| `volumes.<volume-id>.ref_ro`          | `str`                 | Like `ref` but *read-only* mode is enforced.                                                                                                                                                                                                                                                                    |
| `volumes.<volume-id>.ref_rw`          | `str`                 | Like `ref` but *read-write* mode is enforced.                                                                                                                                                                                                                                                                   |

### `images` context

Contains information about images defined in the [`images` section](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#images) of a *batch* workflow.

| Property name                            | Type             | Description                                                                                                                                                                                                                 |
| ---------------------------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `images.<image-id>.id`                   | `str`            | The image definition identifier. For more information, see [`images.<image-id>`](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#images-less-than-image-id-greater-than) section. |
| `images.<image-id>.ref`                  | `str`            | The image reference. For more information, see [`images.<image-id>.ref`](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#images-less-than-image-id-greater-than-ref) attribute.   |
| `images.<image-id>.context`              | `None`           | In *batch* workflows, this property is always `None`.                                                                                                                                                                       |
| `images.<image-id>.full_context_path`    | `None`           | In *batch* workflows, this property is always `None`.                                                                                                                                                                       |
| `images.<image-id>.dockerfile`           | `None`           | In *batch* workflows, this property is always `None`.                                                                                                                                                                       |
| `images.<image-id>.full_dockerfile_path` | `None`           | In *batch* workflows, this property is always `None`.                                                                                                                                                                       |
| `images.<image-id>.build_args`           | `list[str]`      | In *batch* workflows, this property is always `[]`(empty list).                                                                                                                                                             |
| `images.<image-id>.env`                  | `dict[str, str]` | In *batch* workflows, this property is always `{}`(empty dict).                                                                                                                                                             |
| `images.<image-id>.volumes`              | `list[str]`      | In *batch* workflows, this property is always `[]`(empty list).                                                                                                                                                             |

### `strategy` context

Contains information about some strategies of execution set in the [flow defaults](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#defaults).

| Property name           | Type   | Description                                                                                                                                                                                                                                        |
| ----------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `strategy.fail_fast`    | `bool` | Task failure processing strategy. For more information, see [`defaults.fail_fast`](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#defaults-fail_fast) attribute.                                        |
| `strategy.max_parallel` | `int`  | The maximum number of tasks that can be executed at the same time. For more information, see [`defaults.max_parallel`](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#defaults-max_parallel) attribute. |

### `matrix` context

Contains parameters from a combination generated by the [`tasks.strategy.matrix`](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#tasks-strategy-matrix) attribute.

| Property name         | Type                                          | Description                                             |
| --------------------- | --------------------------------------------- | ------------------------------------------------------- |
| `matrix.<param-name>` | `bool` or `int` or `float` or `str` or `None` | The matrix parameter value for the current combination. |

### `needs` context

Contains outputs generated by tasks that were specified in the [`tasks.needs`](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-syntax/..#tasks-needs) attribute. Refer to the [`set-output` command](https://docs.apolo.us/index/apolo-flow-reference/workflow-syntax/batch-workflow-commands#set-output-command) reference to learn how to generate outputs.

| Property name                           | Type  | Description                                                                                                                  |
| --------------------------------------- | ----- | ---------------------------------------------------------------------------------------------------------------------------- |
| `needs.<task-id>.result`                | `str` | State of the completed task `<task-id>`. Can be one of the following: `"succedded"`, `"failed"`, `"cancelled"`, `"skipped"`. |
| `needs.<task-id>.outputs.<output-name>` | `str` | The value of the `<output-name>` output produced by the `<task-id>` task.                                                    |

### `git` context

The `git` context contains a mapping of your flow's workspace to a git repository.

This context can only be used if the flow's workspace is inside some git repository.

| Property name | Type        | Description                                    |
| ------------- | ----------- | ---------------------------------------------- |
| `git.sha`     | `str`       | SHA of the current commit.                     |
| `git.branch`  | `str`       | Name of the current branch.                    |
| `git.tags`    | `list[str]` | List of tags that point to the current commit. |
