Артефакты и статусные проверки на PR
Сохраняем результаты сборки и превращаем CI в надёжный барьер перед мержем.
Артефакт — файл или каталог, который job сохраняет после выполнения, чтобы скачать его вручную или передать другому job.
Зачем артефакты
Runner после job исчезает вместе со всеми файлами. Чтобы сохранить отчёт о покрытии, собранный dist/, лог или скриншоты упавших тестов — их выгружают как артефакт. Артефакты видны на странице прогона и доступны для скачивания.
Загрузка артефакта
- name: Сборка
run: npm run build
- name: Сохранить сборку
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
retention-days: 7
retention-days — сколько хранить (по умолчанию обычно 90 дней; меньше — экономнее).
Передача между jobs
Помните: jobs изолированы. Один job собирает и выгружает, другой — скачивает:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci && npm run build
- uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
name: dist
path: dist/
- run: echo "Деплою содержимое dist/"
Здесь needs: build гарантирует, что deploy стартует только после build и сможет скачать его артефакт.
Статусные проверки на pull request
Главная ценность CI на PR — не пустить плохой код в main. Каждый workflow на pull_request публикует статус (галочка/крестик) прямо в PR. Чтобы статус стал обязательным:
- Settings → Branches → добавить правило защиты для
main. - Включить Require status checks to pass before merging.
- Выбрать нужные проверки (например, job
test).
После этого кнопка Merge заблокируется, пока CI не станет зелёным. Это и есть тот «барьер», ради которого всё затевалось.
Итог
- Артефакты сохраняют файлы после job;
upload-artifact/download-artifact+needsпередают их между jobs. - Статусы проверок видны прямо в PR.
- Защита ветки с обязательными проверками блокирует мерж красного кода в main.