# Build board card

> Canonical HTML: https://screenrig.ai/docs/cards/build-board/

CI pipelines and deploys per repository: failing first, then running, queued and passing, each with its duration, who started it and when.

Category: Operations. Tags: Alerts and status, Numbers and metrics, Offices and workplaces.

## Previews

![Build board](/cards/build-board/v1/screenshots/canvas-bloom.webp?sha=bd583139e4e3af29a6fb1fd03a3520157a497ff4b5a562bb18fa07c926f42bcf)

Canvas

![Build board](/cards/build-board/v1/screenshots/corner-bloom.webp?sha=d6ec8bcb8ebf35ebef116d7178cc5511ccc2032312dba0b2cd08cda91f62af72)

Corner

![Build board](/cards/build-board/v1/screenshots/chip-bloom.webp?sha=e3303046de922c13b66958c75cf3dc3b99640ba72b05c940b7a557337878ba3f)

Chip

## Views and forms

Views: canvas, corner, chip. Canvas forms: landscape, portrait, square, strip.

[Card views, themes and publishing](/docs/cards/). [Browse the gallery](/apps/#cards).

## Data and privacy

Feed: `screenrig.builds/v1`.

Feed documents carry source attribution. The Player supplies the feed to the card.

## Properties

For theme, background, accent and position, see [Common properties](/docs/cards/#common-properties).

Set static properties in `params`. Bind `data` to a project card data key for live values; that document holds only dynamic properties. Without a data key, put the complete configuration in `params`. Nested rows describe the contents of their parent property.

### Static properties

| Name | Type | Default | Values and limits | Description |
| --- | --- | --- | --- | --- |
| `title` | string | `"Builds"` | maxLength: `40` |  |
| `branch` | string | `""` | maxLength: `60` | Shows only runs on this branch; empty shows every branch. |
| `show` | string | `"all"` | `"all"`, `"builds"`, `"deploys"` |  |
| `staleMinutes` | integer | `10` | minimum: `1`; maximum: `1440` | Data older than this shows Updated N min ago. |

### Dynamic properties

| Name | Type | Default | Values and limits | Description |
| --- | --- | --- | --- | --- |
| `updatedAt` | string | `""` | maxLength: `40` | ISO 8601 instant the pipelines were taken (data store only; a feed carries fetchedAt). |
| `pipelines` | array | `[]` | maxItems: `60` |  |
| `pipelines[].id` | string | `""` | maxLength: `60` |  |
| `pipelines[].name` | string |  | minLength: `1`; maxLength: `60`; Required | The repository or pipeline. |
| `pipelines[].branch` | string | `""` | maxLength: `60` |  |
| `pipelines[].kind` | string | `"build"` | `"build"`, `"deploy"` |  |
| `pipelines[].environment` | string | `""` | maxLength: `30` | Where a deploy goes, for example production. |
| `pipelines[].status` | string | `""` | maxLength: `24` | passed, failed, running, queued or cancelled. Also read: success, succeeded, ok, green, deployed; failure, error, broken, red, timed-out; in-progress, building, deploying, started; pending, waiting, scheduled; canceled, skipped, aborted. Any other word shows grey as given. |
| `pipelines[].startedAt` | string | `""` | maxLength: `40` | ISO 8601 instant the run started (queued runs: when they were queued). A running pipeline's duration counts from it. |
| `pipelines[].finishedAt` | string | `""` | maxLength: `40` | ISO 8601 instant the run finished. |
| `pipelines[].durationSeconds` | integer | `0` | minimum: `0`; maximum: `8640000` | The run's length. Left out, it is finishedAt minus startedAt. |
| `pipelines[].actor` | string | `""` | maxLength: `60` | Who started or triggered it. |

## Canvas example

Add this item to a playlist page’s `primitives`. [Publish the playlist and assign a screen](/docs/cards/#publish-a-card-canvas).

```json
{
  "id": "build-board",
  "primitive": "card",
  "card": "build-board",
  "major": 1,
  "params": {
    "theme": "neomustard"
  },
  "rect": {
    "x": 0,
    "y": 0,
    "width": 1920,
    "height": 1080
  },
  "layer": 0,
  "content_fit": "fill",
  "data": "build-board-main"
}
```

## Write live data

Create this document before showing the card, then replace it to update the screen without republishing. Use the same project as the playlist. Supply your API authorization through the environment; see [API authentication](/docs/authentication/).

```console
curl --request PUT "https://api.screenrig.ai/api/card-data/build-board-main" \
  --header "Authorization: Bearer $SCREENRIG_TOKEN" \
  --header "ScreenRig-Project: $SCREENRIG_PROJECT" \
  --header "Content-Type: application/json" \
  --data '{"document":{"updatedAt":"","pipelines":[]}}'
```
