API reference

Logs

Bounded slices of a task's log: failed-only, the tail, a grep with context or a byte range.

GET/v1/ci/jobs/{id}/log

Read a log slice

Permission: ci:jobs.read

Parameters

NameTypeRequiredDescription
idpathstringRequiredThe job's ID.
contextquerystringOptional
failed_onlyquerystringOptional
from_linequerystringOptional
grepquerystringOptional
limitquerystringOptional
linesquerystringOptional
offsetquerystringOptional
shardquerystringOptional
tailquerystringOptional
taskquerystringOptional

Response200 OK

byte_lengthintegerRequired
byte_offsetintegerRequired
failed_onlybooleanRequired
from_lineinteger or null
the 0-based index of the first line in text on a line-addressed slice
hintstring or null
job_idstringRequired
uuidv7 rendered as job_<32 hex>
linesintegerRequired
next_byte_offsetinteger or null
next_lineinteger or null
the line to ask for next; absent at the end of the log
shardstring or null
k/N when the task is a shard; the slice is of that shard only
taskstringRequired
textstringRequired
total_bytesintegerRequired
total_linesinteger
newlines the task has written so far (0 on logs stored before the index existed)
truncatedbooleanRequired
curl "$CIRESK_API/v1/ci/jobs/job_0109badfc220cd056b2c0e862ac73d40/log" \
  -H "Authorization: Bearer $CIRESK_KEY"
POST/v1/ci/jobs/{id}/tasks/{task}/log

Append a log chunk

One log chunk from a worker.

Permission: ci:workers.report

Parameters

NameTypeRequiredDescription
idpathstringRequiredThe job's ID.
taskpathstringRequiredThe task's name, as the manifest names it (test, apps/web:test).

Request body

data_b64stringRequired
finalboolean
lease_idstringRequired
uuidv7 rendered as lease_<32 hex>
seqintegerRequired
starts at 1 per attempt and must equal the last next_seq, else 409 log_sequence_gap
streamstringRequired
One of stdout, stderr, system

Response201 Created

byte_offsetintegerRequired
next_seqintegerRequired
total_bytesintegerRequired
curl -X POST "$CIRESK_API/v1/ci/jobs/job_0109badfc220cd056b2c0e862ac73d40/tasks/test/log" \
  -H "Authorization: Bearer $CIRESK_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "data_b64": "acme/platform",
    "final": true,
    "lease_id": "lease_01778d67b48ee630f44b3f03ab6254a8",
    "seq": 1,
    "stream": "stdout"
  }'
POST/v1/ci/jobs/{id}/tasks/{task}/log/segments

Start a log segment upload

A presigned put for one log segment the worker writes to the store itself.

Permission: ci:workers.report

Parameters

NameTypeRequiredDescription
idpathstringRequiredThe job's ID.
taskpathstringRequiredThe task's name, as the manifest names it (test, apps/web:test).

Request body

digeststringRequired
sha-256 of the segment's bytes as put
first_seqintegerRequired
the seq of the segment's first chunk; must equal the last next_seq
lease_idstringRequired
uuidv7 rendered as lease_<32 hex>
sizeintegerRequired

Response200 OK

expires_atstring (date-time)Required
headersmap of string
methodstringRequired
urlstringRequired
curl -X POST "$CIRESK_API/v1/ci/jobs/job_0109badfc220cd056b2c0e862ac73d40/tasks/test/log/segments" \
  -H "Authorization: Bearer $CIRESK_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "digest": "sha256:c21fa32a40d82233c44e76e6ae776b4d403ac1a564ca26de95a14c6bb47eaf49",
    "first_seq": 1,
    "lease_id": "lease_01778d67b48ee630f44b3f03ab6254a8",
    "size": 18432000
  }'
POST/v1/ci/jobs/{id}/tasks/{task}/log/segments/commit

Commit a log segment

A log segment the worker put: checked by its head and indexed.

Permission: ci:workers.report

Parameters

NameTypeRequiredDescription
idpathstringRequiredThe job's ID.
taskpathstringRequiredThe task's name, as the manifest names it (test, apps/web:test).

Request body

chunksarray of objectsRequired
chunks[].digeststringRequired
sha-256 digest as sha256:<64 hex>
chunks[].lenintegerRequired
chunks[].linesintegerRequired
newlines in the chunk, for line paging
chunks[].streamstringRequired
One of stdout, stderr, system
digeststringRequired
sha-256 digest as sha256:<64 hex>
finalboolean
first_seqintegerRequired
lease_idstringRequired
uuidv7 rendered as lease_<32 hex>
sizeintegerRequired

Response201 Created

byte_offsetintegerRequired
next_seqintegerRequired
total_bytesintegerRequired
curl -X POST "$CIRESK_API/v1/ci/jobs/job_0109badfc220cd056b2c0e862ac73d40/tasks/test/log/segments/commit" \
  -H "Authorization: Bearer $CIRESK_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "chunks": [
      {
        "digest": "sha256:c21fa32a40d82233c44e76e6ae776b4d403ac1a564ca26de95a14c6bb47eaf49",
        "len": 1,
        "lines": 3,
        "stream": "stdout"
      }
    ],
    "digest": "sha256:c21fa32a40d82233c44e76e6ae776b4d403ac1a564ca26de95a14c6bb47eaf49",
    "final": true,
    "first_seq": 1,
    "lease_id": "lease_01778d67b48ee630f44b3f03ab6254a8",
    "size": 18432000
  }'