inputs и outputs
Тема дорожной карты · GitHub Actions
Inputs и outputs — публичный интерфейс кастомного action в GitHub Actions, объявляемый в action.yml для определения принимаемых параметров и производимых значений для последующих шагов пайплайна. Каждый input в карте inputs: имеет description:, необязательный булевый required: и значение default:. Вызывающие workflow передают значения через ключ with:, а action читает их через ${{ inputs.<name> }} в composite actions или через функцию core.getInput('name') в JavaScript actions. Outputs объявляются в карте outputs: и задаются во время выполнения записью echo "name=value" >> $GITHUB_OUTPUT в shell-шаге или вызовом core.setOutput('name', value) в JavaScript action, делая значение доступным для последующих jobs как ${{ steps.<step-id>.outputs.<name> }}. Хорошо спроектированный контракт input/output в action.yml позволяет потребителю из GitHub Actions Marketplace воспринимать action как чёрный ящик — передать конфигурацию, получить результаты — не разбираясь во внутренних деталях реализации. Документирование обязательных и необязательных inputs с понятными строками description: — лучшая практика GitHub Actions, улучшающая обнаруживаемость и снижающая барьер интеграции для команд, внедряющих ваш action в свои пайплайны непрерывной интеграции.
Как это работает
inputs и outputs пакетируют несколько шагов в один переиспользуемый action без написания JavaScript или Docker-контейнера. Определяется в action.yml с runs: using: "composite" + список steps:. Inputs (inputs:) + outputs (outputs:). Хранятся в корне репо или поддиректории + ссылка через uses: ./.github/actions/my-action (локально) или uses: org/repo/.github/actions/x@sha (remote).
Когда применять
Composite actions — для дедупликации повторяющихся между workflows шагов (например "setup + cache + install" прелюдия). Дешевле JS или Docker actions — просто YAML-wrapper. Локальный composite — для repo-внутреннего переиспользования; публичный action — только когда другие команды хотят. Smoke-test workflow, гоняющий composite action.
Типичные ошибки
Ловушки inputs и outputs: глубоко вложенные composite actions, зовущие другие composite actions (отладка сложная); нет версионирования вашего action (другие workflows тянут main, сюрпризы ломают); большие composite actions, делающие "всё" (делите на меньшие).