#GitHub Actions
Продвинутый уровень · Урок 5 из 7 · около 20 минут плюс время запуска · Нужно: Скрипты с claude -p · Сверено с Claude Code v2.1.285 (stable) 09.10.2026
#Цель
К концу урока вы сможете запускать Claude Code без присмотра в workflow GitHub Actions, который берёт учётные данные из секрета репозитория и останавливается в пределах лимитов, прописанных в файле.
#Что понадобится
- Флаги
claude -pиз урока 4, например--max-turnsи--allowedTools. - GitHub CLI с входом через
gh auth login— он нужен быстрой настройке (Quick setup). - Новая приватная копия шаблона для практики — только для этого урока. Вы её владелец, поэтому у вас полный контроль над ней (Permission levels for a personal account repository), включая права администратора, нужные для настройки (Setup). Создайте её так:
gh repo create claude-actions-practice --template wesammustafa/claude-code-practice --private --clone
cd claude-actions-practice
--template создаёт новый репозиторий на основе шаблона, а --clone клонирует его (gh repo create). Проверка запускается в этой копии, с Node.js LTS, без --dir. В конце вы уберёте из неё workflow, секрет и доступ приложения.
- Учётные данные. Рекомендуется API-ключ Claude Console, созданный для этого урока, потому что при разборке он удаляется. На плане Pro, Max, Team или Enterprise (Manual setup) можно вместо этого дать быстрой настройке создать токен подписки (Quick setup). Если Claude Code на вашей машине уже использует API-ключ, быстрая настройка возьмёт его, и при разборке вы удалили бы ключ, которым пользуется ваш собственный Claude Code; шаг 3 разбора примера показывает, как подставить ключ для урока.
- Расход лимита: небольшой. Каждый запуск короткий и к тому же расходует минуты GitHub Actions (см. «Осторожно»).
#Идея
Claude Code GitHub Action — anthropics/claude-code-action (Anthropic) — запускает Claude Code как шаг workflow. Без входного параметра prompt он ждёт упоминания @claude в issue или пул-реквесте и отвечает комментарием; с prompt он запускается, не дожидаясь упоминания (Interactive and automation modes), а его параметр display_report выводит отчёт Claude на страницу сводки запуска (action.yml at v1.0.237).
Workflow ссылается на секрет репозитория, в котором лежат учётные данные (Manual setup).
За клавиатурой никого нет, поэтому лимиты прописываются в файле. claude_args передаёт CLI-флаги Claude Code, например --max-turns и --allowedTools (Pass CLI arguments), а если промпт записан текстом, а не скиллом, у Claude нет оболочки, пока вы не разрешите нужные ему команды (Run on a schedule). permissions и timeout-minutes задания ограничивают его токен GitHub и время работы (Workflow syntax).
#Разбор примера
Подключите копию через быструю настройку, затем задайте Claude вопрос в issue.
- В копии запустите
claude, выполните/install-github-appи следуйте подсказкам для этого репозитория: Claude Code установит GitHub-приложение Claude (Quick setup). Когда GitHub спросит, к каким репозиториям у приложения будет доступ, выберите Only select repositories и отметьте только эту копию (Installing a GitHub App). Если приложение уже установлено в вашем аккаунте, добавьте эту копию в его разделе Repository access (Modifying repository access). - Затем Claude Code спросит, продолжать ли настройку GitHub Actions. Продолжите и выберите только workflow для
@claude,claude.yml, без workflow ревью. В качестве учётных данных вставьте ключ для урока или создайте токен подписки, если только Claude Code не берёт собственный API-ключ (см. «Что понадобится»). Claude Code сохранит учётные данные как секретANTHROPIC_API_KEYилиCLAUDE_CODE_OAUTH_TOKEN, запушит ветку с выбранным workflow и откроет GitHub в браузере с готовым к созданию пул-реквестом (Quick setup). - Создайте и слейте этот пул-реквест, затем обновите клон и выведите список секретов:
git pull
gh secret list
В списке будет ANTHROPIC_API_KEY или CLAUDE_CODE_OAUTH_TOKEN (gh secret list). Слитый .github/workflows/claude.yml уже настроен на этот секрет, и @claude теперь работает в репозитории (Quick setup). Если быстрая настройка взяла API-ключ вашего собственного Claude Code, подставьте сейчас ключ для урока: gh secret set ANTHROPIC_API_KEY попросит его вставить (gh secret set).
4. Откройте issue с упоминанием @claude. В интерактивном режиме Claude отвечает на @claude в теле или заголовке только что открытого issue (Interactive and automation modes):
gh issue create --title "What does links.js do?" --body "@claude In one paragraph, what does src/links.js do? Don't change any files."
gh issue create выводит URL нового issue (gh issue create). gh run list --limit 3 покажет запущенный им прогон (gh run list). Когда он завершится, gh issue view <issue-url> --comments покажет ответ Claude в комментарии (gh issue view). Формулировки у вас будут другими, но ответ должен описывать, как src/links.js находит ссылки в Markdown.
#Ваша очередь
Задание: добавьте .github/workflows/linkcheck-report.yml — workflow, запускаемый вручную, в котором Claude запускает проверку ссылок из шаблона на samples/ и объясняет каждую битую ссылку на странице сводки запуска, не меняя никаких файлов. Отправная точка — пример Run on a schedule из документации. Он задаёт модель через --model: выберите её, как в уроке 3 Среднего уровня, или уберите эту строку, чтобы использовать модель Claude Code по умолчанию (Pass CLI arguments).
Критерии приёмки:
- Он запускается только вручную:
on: workflow_dispatchи никаких других триггеров. - Он использует
anthropics/claude-code-action, закреплённый на теге релиза или полном SHA коммита, а не@v1(почему — в разделе «Осторожно»). Релиз v1.0.237 устанавливает Claude Code v2.1.285 — версию, с которой сверялась эта страница (run.ts at v1.0.237). - У него есть
prompt, так что он работает в режиме автоматизации. - Учётные данные берутся из секрета, сохранённого быстрой настройкой, через соответствующий параметр —
anthropic_api_keyилиclaude_code_oauth_token(Manual setup). В самом файле учётных данных нет. - Токен задания только для чтения: в
permissionsнет прав на запись, кромеid-token: write.permissionsзадания даютcontents: readплюсid-token: write, если вы оставили его из примеров документации, где он нужен для аутентификации действия через GitHub App по умолчанию (Respond to @claude mentions).github_tokenравен собственномуGITHUB_TOKENзадания, так что Claude действует с этим токеном, а не с токеном приложения (Action parameters). claude_argsзадаёт--max-turnsне больше 10 и правило--allowedToolsтолько для команды проверки ссылок — никогда не для всего Bash (Configure permissions). Записывайте лимит ходов двумя словами,--max-turns <n>, как в примере Pass CLI arguments из документации: действие берёт значение флага из следующего за ним слова (parse-sdk-options.ts at v1.0.237).- У задания
timeout-minutesне больше 30 (Workflow syntax). - Перед запуском действия оно делает checkout репозитория и настраивает Node.js, как
.github/workflows/progress.ymlиз шаблона, чтобы проверка ссылок могла работать. display_reportравенtrue, так что отчёт Claude с ответом появляется на странице сводки запуска (action.yml at v1.0.237, Adding a job summary). Действие советует включать его, только когда входным данным можно доверять, как здесь: запуск стартуете вы, а промпт и файлы ваши.show_full_outputостаётся выключенным, и вы не включаете режим отладки GitHub Actions (секретACTIONS_STEP_DEBUGсо значениемtrue), который включает полный вывод: полный вывод может напечатать секреты в журнал (security notes). Без него журнал скрывает сообщения Claude и вызовы инструментов и показывает сводку результата со строкой, предлагающей включить полный вывод (run-claude-sdk.ts at v1.0.237).
Затем запустите его, сохраните запись о запуске и разберите всё:
- Закоммитьте workflow и запушьте в
main. Ручной запуск возможен, только когда файл workflow лежит в ветке по умолчанию (workflow_dispatch). - Запустите его, найдите его id, проследите до конца и откройте в браузере (gh workflow run, gh run watch, gh run view):
gh workflow run linkcheck-report.yml
gh run list --workflow linkcheck-report.yml --limit 1
gh run watch <run-id> --exit-status
gh run view <run-id> --web
На странице сводки запуска — отчёт Claude с объяснением каждой битой ссылки. Формулировки у вас будут другими. 3. Сохраните запись о запуске для проверки с полями, которые она читает (gh run list):
mkdir -p .practice
gh run list --workflow linkcheck-report.yml --json databaseId,status,conclusion,event,headSha,url,workflowName > .practice/a-5-runs.json
- Выполните
npm run check -- a-5(раздел «Проверка» ниже). Когда она пройдёт, разберите всё: это обязательно. Не разбирайте заранее: чтобы исправить неудачный запуск, нужен секрет, а разборка его удаляет.
Внимание
Удаление секрета не делает недействительными учётные данные, которые в нём хранились (Uninstall). Секрет CLAUDE_CODE_OAUTH_TOKEN содержит OAuth-токен того же вида, что генерирует claude setup-token (Action parameters). На 09.10.2026 токен из claude setup-token действует один год (Authentication), и удаление секрета его не отзывает.
- Удалите оба workflow, затем закоммитьте и запушьте:
git rm .github/workflows/claude.yml .github/workflows/linkcheck-report.yml
git commit -m "Remove the Claude workflows"
git push
- Удалите секрет:
gh secret delete ANTHROPIC_API_KEYилиgh secret delete CLAUDE_CODE_OAUTH_TOKEN(gh secret delete). - Если использовался API-ключ, удалите ключ, хранившийся в секрете, на странице API-ключей Claude Console. Если этим ключом пользуется ваш собственный Claude Code, после этого ему на вашей машине понадобится новый ключ.
- На GitHub откройте Settings > Applications > Installed GitHub Apps и нажмите Configure рядом с Claude. Затем либо уберите эту копию в разделе Repository access и нажмите Save, либо, если эта копия — единственный репозиторий, к которому у приложения есть доступ, и больше ничего вашего его не использует, нажмите Uninstall (Modifying repository access, Blocking access).
#Проверка
Урок пройден, когда выполнено всё это:
- Закоммиченный workflow запускает
anthropics/claude-code-action, закреплённый на теге релиза или полном SHA коммита, в режиме автоматизации, с учётными данными из секрета и без них в файле. - Лимиты прописаны в файле:
--max-turnsне больше 10, список--allowedToolsбез неограниченного Bash, токен задания только для чтения (вpermissionsнет прав на запись, кромеid-token: write) иtimeout-minutesне больше 30. -
.practice/a-5-runs.jsonпоказывает завершённый успешный ручной запуск на коммите, содержащем workflow. - Самопроверка (не тестируется): Claude ответил на ваш issue комментарием, а страница сводки вашего запуска объясняет каждую битую ссылку.
Запустите npm run check -- a-5 в этой копии.
Если первый пункт не проходит из-за строки uses:, закрепите тег релиза, например @v1.0.237, или полный SHA коммита этого релиза. Если не проходит второй пункт, его подсказка называет лимит, который нужно добавить или исправить. Если сохранённый запуск завершился неудачей, gh run view <run-id> --log-failed покажет почему — например имя секрета не совпадает с workflow или достигнут лимит ходов, что завершается ошибкой (CLI reference); запушьте исправление, снова запустите workflow и снова сохраните запись.
Проверка читает workflow из истории, поэтому проходит и после разборки. Как только она пройдёт, разберите всё, как описано в шагах 5–8 задания.
#Осторожно
- Любой, у кого есть права на запись в репозиторий, может запустить прогон через
@claude, а текст issue или комментария — это входные данные для Claude, так что в нём могут быть скрытые инструкции (Who can trigger runs, заметки о безопасности действия). Держите эту копию приватной и только своей: журналы запусков видят лишь люди с правами на чтение (Using workflow run logs). - Каждый запуск расходует минуты GitHub Actions и токены. В приватном репозитории минуты списываются из включённых в ваш аккаунт (GitHub Actions billing). Токены оплачиваются с вашего аккаунта Console при API-ключе или берутся из вашего плана при токене подписки.
--max-turnsиtimeout-minutesограничивают объём работы запуска и тем самым снижают и то и другое (Manage costs). - Тег
v1из примеров документации переезжает на каждый новый релиз (tags), а каждый релиз закрепляет устанавливаемую версию Claude Code, так что workflow на@v1может запустить более новый Claude Code, чем вы тестировали. GitHub говорит, что закрепление на полном SHA коммита — «на данный момент единственный способ использовать действие как неизменяемый релиз», а тег можно перенести или удалить (Secure use reference). Тег релиза вродеv1.0.237— более лёгкое закрепление, которое этот урок тоже принимает.
Перечень сверен с критериями включения 09.10.2026.
#Что дальше
- Run on a schedule: тот же режим автоматизации с запуском по cron.
- Set up for an organization: одна установка приложения и один секрет организации на множество репозиториев или федерация удостоверений рабочих нагрузок вместо хранимого ключа.
- Руководство по решениям для действия (Anthropic): готовые workflow для ревью пул-реквестов, плановых работ по обслуживанию и сортировки issue.
Источники: Claude Code GitHub Actions · Authentication · CLI reference · Configure permissions · claude-code-action v1.0.237: action.yml, run.ts, parse-sdk-options.ts, run-claude-sdk.ts, security и его теги · GitHub: Installing a GitHub App from a third party, Permission levels for a personal account repository, Events that trigger workflows, Workflow syntax, Workflow commands, Secure use reference, Using workflow run logs, Reviewing and modifying installed GitHub Apps, GitHub Actions billing · Руководство GitHub CLI: gh repo create, gh issue create, gh issue view, gh secret list, gh secret set, gh workflow run, gh run list, gh run watch, gh run view, gh secret delete
← Скрипты с claude -p · Оглавление Продвинутого уровня · Поделитесь настройкой с командой → · Тема: Автоматизация · Застряли на уроке?