Перейти к содержанию

Использование в CI

Запускайте ycli в конвейере, чтобы прокомментировать задачу после деплоя, перевести её дальше по процессу или прочитать страницу. Конвейеру нужны три вещи: сам ycli, два учётных значения в виде секретов и команды, которые никогда не ждут человека.

Учётные данные

Сохраните YANDEX_ID_OAUTH_TOKEN и YANDEX_ID_ORGANIZATION_ID как секреты конвейера и передайте их задаче как переменные окружения. Токен — это OAuth-токен человека (см. Аутентификация): дайте конвейеру токен учётной записи, которая может делать только то, что делает конвейер. Вход от имени сервисного аккаунта в CLI пока не поддерживается (#201).

GitHub Actions

name: notify-tracker
on:
  workflow_dispatch:

jobs:
  comment:
    runs-on: ubuntu-latest
    env:
      YANDEX_ID_OAUTH_TOKEN: ${{ secrets.YANDEX_ID_OAUTH_TOKEN }}
      YANDEX_ID_ORGANIZATION_ID: ${{ secrets.YANDEX_ID_ORGANIZATION_ID }}
    steps:
      - uses: astral-sh/setup-uv@v10.2.0
      - run: uvx yandex-cli==0.49.1 tracker comments add TRACKER-1 --text "Deployed ${GITHUB_SHA::7}"

uvx yandex-cli==<version> запускает указанную версию, ничего больше не устанавливая. Фиксируйте версию: конвейер не должен менять поведение при выходе нового релиза.

Готовый GitHub Action запланирован: следите за #210.

GitLab CI

Точка входа образа — ycli, поэтому сбросьте её, чтобы получить оболочку для script:

comment:
  image:
    name: ghcr.io/bim-ba/ycli:0.49.1
    entrypoint: [""]
  script:
    - ycli tracker comments add TRACKER-1 --text "Deployed $CI_COMMIT_SHORT_SHA"

Задайте две переменные в Settings → CI/CD → Variables с признаком masked.

Любой другой раннер

С Docker передавайте переменные по имени, чтобы их значения не попадали в командную строку:

docker run --rm -e YANDEX_ID_OAUTH_TOKEN -e YANDEX_ID_ORGANIZATION_ID \
  ghcr.io/bim-ba/ycli:0.49.1 tracker comments add TRACKER-1 --text "Deployed"

Команды, которые не ждут

  • Для удаления нужен --yes. Команда, которая уничтожает данные, просит подтверждения; без терминала она вместо этого завершается с кодом 2. Передайте --yes, если конвейер должен удалять.
  • Вывод — JSON. Без терминала ycli печатает JSON, поэтому его читает jq: ycli tracker issues get TRACKER-1 | jq .key. Встроенный --jq делает то же самое, если установлен extra jq ('yandex-cli[jq]').
  • Сначала попробуйте. --dry-run печатает запрос, который отправила бы запись, и ничего не отправляет.

Завершайте задачу с верным кодом

У каждого вида ошибки свой код возврата. Конвейер обычно повторяет запуск при временном сбое и останавливается при остальных:

ycli tracker comments add TRACKER-1 --text "Deployed" || status=$?
case "${status:-0}" in
  0) ;;
  5|6) echo "Tracker is busy or down, retry later"; exit 75 ;;
  4) echo "The token is missing or rejected"; exit 1 ;;
  *) exit "$status" ;;
esac

Проверено на 2026-10-03: команды Docker и сброшенная точка входа работают с настоящей организацией; задания GitHub Actions и GitLab не запускались.