Примечание.
Файлы блокировки зависимостей рабочего процесса находятся и подвергаются Публичный предварительный просмотр изменению.
Почему зависимости рабочих процессов блокируются?
Когда рабочий процесс ссылается на действие тегом или ветвью, например uses: octo-org/deploy-action@v3 или uses: octo-org/deploy-action@main, GitHub Actions разрешает эту ссылку на то, что зафиксирует тег или ветвь во время выполнения.
Теги и ветви могут перемещаться, поэтому код, который выполняется, не гарантируется, что код, который автор рабочего процесса первоначально рассмотрел. Если учетная запись вышестоящего обработчика скомпрометирована, а тег переназначается, репозитории могут запускать вредоносный код.
Файл блокировки зависимостей рабочего процесса закрепляет sha фиксации для каждого действия (включая транзитивные зависимости) и повторно используемый рабочий процесс, от которых зависят рабочие процессы. Это дает вам следующее:
- Воспроизводимые сборки
- Просмотр изменений зависимостей и Dependabot обновлений версий
- Аудит зависимостей систем CI/CD
Как работает блокировка?
Файл блокировки определяется в репозитории по адресу .github/workflows/actions.lock. Он создается расширением gh actions-lockGitHub CLI и никогда не должен изменяться вручную.
Рабочие процессы репозитория можно подключить к файлу блокировки один раз или одновременно. После подключения рабочего процесса:
- Все зависимости действий, которые использует рабочий процесс, должны присутствовать в файле блокировки.
- Заблокированная фиксация — это то, что выполняется при выполнении рабочего процесса, а также то, какие политики разрешенных действий проверяются. Эта фиксация должна существовать в ветви исходного репозитория.
Файл блокировки охватывает рабочие процессы в собственном репозитории. Он распространяется на транзитивные зависимости (действия, используемые зависимостями действия ), за исключением зависимостей повторно используемых вызовов рабочих процессов. Повторно используемый рабочий процесс охватывается блокировкой репозитория, в котором он определен.
Что такое запись lockfile?
В файле блокировки есть два раздела.
workflows записывает зависимости каждого подключенного рабочего процесса и dependencies записывает записи, в которых фиксируется каждая из этих ссылок.
# This file is machine-generated by `gh actions-lock`.
# Do not edit by hand; run `gh actions-lock` to update.
version: 'v0.0.2'
workflows:
'.github/workflows/ci.yml':
- 'octo-org/[email protected]'
dependencies:
'octo-org/[email protected]':
ref: 'v3.1.0'
commit: 'sha1-...'
owner_id: 44036562
repo_id: 197814629
Каждая запись зависимостей:
ref: ссылка на рабочий процесс используется, например тег или ветвь.commit: точная фиксация ссылки, разрешенной. Это код, который будет выполняться.owner_idиrepo_id: числовое удостоверение исходного репозитория. GitHub Actions использует их для подтверждения во время выполнения, что репозиторий за именем по-прежнему заблокирован.
Как файлы блокировки сравниваются с закреплением SHA?
GitHub в файлах рабочего процесса рекомендуется закреплять сторонние действия с полной фиксацией SHA в файлах рабочего процесса. Для репозиториев, которые принимают блокировку, SHA закрепление в файлах рабочих процессов больше не требуется. Блокировка является лучшим вариантом, так как она поддерживает транзитивные зависимости, упрощает чтение файлов рабочих процессов и записывает удостоверение исходного репозитория.
Дальнейшие действия
Сведения о создании файла блокировки для репозитория см. в разделе Блокировка зависимостей действий в рабочих процессах репозитория.