Skip to content
Exlogare

Drone CI / Woodpecker ingest

Отправка логов Drone или Woodpecker в Exlogare через шаг при падении.

POST /api/ingest/drone работает и для Drone CI, и для Woodpecker CI — у них одинаковый контракт env-переменных.

Обязательные поля

ПолеТипЗаметки
repostringorg/repo (DRONE_REPO).
build_numberintDRONE_BUILD_NUMBER.
statusstringfailure / success / error / killed.
logstringЛог упавшего шага, до 10 МиБ.
pipeline, step, branch, commit_sha, build_urlопционально

Drone CI

kind: pipeline
type: docker
name: ci

steps:
  - name: test
    image: golang:1.22
    commands:
      - go test ./... 2>&1 | tee /drone/src/build.log
      - exit ${PIPESTATUS[0]}

  - name: send-failure-log
    image: alpine
    when:
      status: [ failure ]
    environment:
      EXLOGARE_TOKEN:
        from_secret: exlogare_token
    commands:
      - apk add --no-cache curl jq
      - |
        curl -fsS -X POST https://api.exlogare.net/api/ingest/drone \
          -H "Authorization: Bearer $EXLOGARE_TOKEN" \
          -H "Content-Type: application/json" \
          -d "$(jq -n \
            --arg repo "$DRONE_REPO" \
            --arg br   "$DRONE_BRANCH" \
            --arg sha  "$DRONE_COMMIT" \
            --arg url  "$DRONE_BUILD_LINK" \
            --arg log  "$(cat /drone/src/build.log)" \
            '{repo:$repo, build_number:'$DRONE_BUILD_NUMBER', status:"failure", branch:$br, commit_sha:$sha, build_url:$url, log:$log}')"

Woodpecker CI

Форма та же, замените DRONE_* на CI_*:

steps:
  send-failure-log:
    image: alpine
    when:
      status: [ failure ]
    environment:
      EXLOGARE_TOKEN:
        from_secret: exlogare_token
    commands:
      - apk add --no-cache curl jq
      - |
        curl -fsS -X POST https://api.exlogare.net/api/ingest/drone \
          -H "Authorization: Bearer $EXLOGARE_TOKEN" \
          -H "Content-Type: application/json" \
          -d "$(jq -n \
            --arg repo "$CI_REPO" \
            --arg br   "$CI_COMMIT_BRANCH" \
            --arg sha  "$CI_COMMIT_SHA" \
            --arg url  "$CI_PIPELINE_URL" \
            --arg log  "$(cat build.log)" \
            '{repo:$repo, build_number:'$CI_PIPELINE_NUMBER', status:"failure", branch:$br, commit_sha:$sha, build_url:$url, log:$log}')"

Советы

  • Лог из предыдущего шага захватывайте tee build.log — Drone/Woodpecker не дают runtime-вызова “дай лог предыдущего шага”.
  • Используйте секрет-менеджер движка (from_secret) — чтобы токен не попал в git-историю YAML.