# CICD
## CI/CD Pipeline Attributes
This group describes attributes specific to pipelines within a Continuous Integration and Continuous Deployment (CI/CD) system. A [pipeline](https://wikipedia.org/wiki/Pipeline_(computing)) in this case is a series of steps that are performed in order to deliver a new version of software. This aligns with the [Britannica](https://www.britannica.com/dictionary/pipeline) definition of a pipeline where a **pipeline** is the system for developing and producing something. In the context of CI/CD, a pipeline produces or delivers software.
| Attribute | Type | Description | Examples | Stability |
|---|---|---|---|---|
| `cicd.pipeline.action.name` | string | The kind of action a pipeline run is performing. | `BUILD`; `RUN`; `SYNC` |  |
| `cicd.pipeline.name` | string | The human readable name of the pipeline within a CI/CD system. | `Build and Test`; `Lint`; `Deploy Go Project`; `deploy_to_environment` |  |
| `cicd.pipeline.result` | string | The result of a pipeline run. | `success`; `failure`; `timeout`; `skipped` |  |
| `cicd.pipeline.run.id` | string | The unique identifier of a pipeline run within a CI/CD system. | `120912` |  |
| `cicd.pipeline.run.state` | string | The pipeline run goes through these states during its lifecycle. | `pending`; `executing`; `finalizing` |  |
| `cicd.pipeline.run.url.full` | string | The [URL](https://wikipedia.org/wiki/URL) of the pipeline run, providing the complete address in order to locate and identify the pipeline run. | `https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763?pr=1075` |  |
| `cicd.pipeline.task.name` | string | The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures. | `Run GoLang Linter`; `Go Build`; `go-test`; `deploy_binary` |  |
| `cicd.pipeline.task.run.id` | string | The unique identifier of a task run within a pipeline. | `12097` |  |
| `cicd.pipeline.task.run.result` | string | The result of a task run. | `success`; `failure`; `timeout`; `skipped` |  |
| `cicd.pipeline.task.run.url.full` | string | The [URL](https://wikipedia.org/wiki/URL) of the pipeline task run, providing the complete address in order to locate and identify the pipeline task run. | `https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075` |  |
| `cicd.pipeline.task.type` | string | The type of the task within a pipeline. | `build`; `test`; `deploy` |  |
| `cicd.system.component` | string | The name of a component of the CICD system. | `controller`; `scheduler`; `agent` |  |
| `cicd.worker.id` | string | The unique identifier of a worker within a CICD system. | `abc123`; `10.0.1.2`; `controller` |  |
| `cicd.worker.name` | string | The name of a worker within a CICD system. | `agent-abc`; `controller`; `Ubuntu LTS` |  |
| `cicd.worker.state` | string | The state of a CICD worker / agent. | `idle`; `busy`; `down` |  |
| `cicd.worker.url.full` | string | The [URL](https://wikipedia.org/wiki/URL) of the worker, providing the complete address in order to locate and identify the worker. | `https://cicd.example.org/worker/abc123` |  |
---
`cicd.pipeline.action.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
| Value | Description | Stability |
|---|---|---|
| `BUILD` | The pipeline run is executing a build. |  |
| `RUN` | The pipeline run is executing. |  |
| `SYNC` | The pipeline run is executing a sync. |  |
---
`cicd.pipeline.result` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
| Value | Description | Stability |
|---|---|---|
| `cancellation` | The pipeline run was cancelled, eg. by a user manually cancelling the pipeline run. |  |
| `error` | The pipeline run failed due to an error in the CICD system, eg. due to the worker being killed. |  |
| `failure` | The pipeline run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the pipeline run. |  |
| `skip` | The pipeline run was skipped, eg. due to a precondition not being met. |  |
| `success` | The pipeline run finished successfully. |  |
| `timeout` | A timeout caused the pipeline run to be interrupted. |  |
---
`cicd.pipeline.run.state` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
| Value | Description | Stability |
|---|---|---|
| `executing` | The executing state spans the execution of any run tasks (eg. build, test). |  |
| `finalizing` | The finalizing state spans from when the run has finished executing (eg. cleanup of run resources). |  |
| `pending` | The run pending state spans from the event triggering the pipeline run until the execution of the run starts (eg. time spent in a queue, provisioning agents, creating run resources). |  |
---
`cicd.pipeline.task.run.result` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
| Value | Description | Stability |
|---|---|---|
| `cancellation` | The task run was cancelled, eg. by a user manually cancelling the task run. |  |
| `error` | The task run failed due to an error in the CICD system, eg. due to the worker being killed. |  |
| `failure` | The task run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the task run. |  |
| `skip` | The task run was skipped, eg. due to a precondition not being met. |  |
| `success` | The task run finished successfully. |  |
| `timeout` | A timeout caused the task run to be interrupted. |  |
---
`cicd.pipeline.task.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
| Value | Description | Stability |
|---|---|---|
| `build` | build |  |
| `deploy` | deploy |  |
| `test` | test |  |
---
`cicd.worker.state` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
| Value | Description | Stability |
|---|---|---|
| `available` | The worker is not performing work for the CICD system. It is available to the CICD system to perform work on (online / idle). [1] |  |
| `busy` | The worker is performing work for the CICD system. |  |
| `offline` | The worker is not available to the CICD system (disconnected / down). |  |
**[1]:** Pipelines might have conditions on which workers they are able to run so not every worker might be available to every pipeline.