


28 октября GitHub объявил об общем доступе к файлам фиксации зависимостей для Actions. Возможность доступна на планах Free, Team и Enterprise Cloud, включая вариант с размещением данных в выбранном регионе. На Mentoring.digital разбираем, как lockfile помогает сделать запуск CI предсказуемее.
В workflow можно сохранить понятные ссылки на ветки и теги, а запускать коммиты, записанные в lockfile. Даже если ссылка переместится, выполняться будет закреплённая версия. Расширение GitHub CLI gh actions-lock создаёт файл .github/workflows/actions.lock для действий и их транзитивных зависимостей, то есть зависимостей самих действий.
Рабочие процессы подключаются по отдельности. У подключённого workflow каждая зависимость должна присутствовать в файле фиксации. Это позволяет вводить механизм постепенно, начиная с одного понятного процесса сборки или тестирования.
Когда Dependabot предлагает обновление версии действия для подключённого workflow, соответствующая запись lockfile обновляется в том же pull request. Дополнительная настройка для этого не требуется. Администраторы могут потребовать использование lockfile политикой Require lockfile. Предусмотрена и проверка актуальности файла без его изменения, в том числе в CI.
Для команды это удобный повод определить, кто рассматривает изменения зависимостей автоматизации. Редакция рекомендует проверять в одном запросе на изменение и новую ссылку, и обновлённую фиксацию, и результат тестового запуска. Если смотреть только на зелёный статус сборки, назначение обновления останется неясным.
GitHub отдельно предупреждает: lockfile защищает от неожиданных изменений зависимостей, но не определяет, безопасна ли выбранная зависимость. Закрепить можно и нежелательный код. Поэтому сначала изучают действие и необходимые ему разрешения, затем фиксируют выбранную версию.
Начните с тестового workflow без рабочих секретов и необратимых внешних действий. Сохраните исходный файл, просмотрите изменения после генерации и проверьте штатный сценарий обновления зависимости. Разобрать организацию CI и границы доступа автоматизации можно с наставником по DevOps. Здесь описан выпуск функции; включение политики в проектах читателя не выполнялось.