참고
워크플로 종속성 잠금 파일은 공개 미리 보기에 있으며 변경될 수 있습니다.
워크플로의 종속성을 잠그면 참조된 작업에 원래 검토된 것과 동일한 코드가 포함됩니다. 자세한 내용은 워크플로 종속성 락파일을(를) 참조하세요.
1. 동작 참조 확인
잠금 파일을 만들면 종속성이 현재 브랜치 또는 태그 참조 기준의 커밋으로 고정됩니다. 이 버전들이 제자리에 고정하려는 버전인지 확인합니다.
워크플로의 각 uses 참조가 지원되는 현재 버전의 액션을 가리키는지 확인합니다. 모범 사례는 안전 사용 참조을 참조하세요.
워크플로 중 하나라도 다른 리포지토리에서 재사용 가능한 워크플로를 호출하는 경우 해당 참조도 확인합니다. 재사용 가능한 워크플로의 종속성은 다시 사용할 수 있는 워크플로가 정의된 리포지토리의 잠금 파일에서 다룹니다. 조직에서 공유 워크플로를 유지 관리하는 경우 먼저 해당 리포지토리를 온보딩하는 것이 좋습니다. 워크플로 구성 재사용을(를) 참조하세요.
Dependabot가 GitHub Actions 종속성을 관리하도록 하는 것을 권장합니다. 아직 사용하도록 설정되지 않은 경우 잠금 파일을 만들기 전에 사용하도록 설정합니다. Dependabot을 사용하여 작업을 최신 상태로 유지을(를) 참조하세요.
2. 확장 actions-lock 프로그램을 설치합니다
-
GitHub CLI 를 설치합니다.
-
익스텐션을 설치합니다.
Bash gh extension install github/gh-actions-lock
gh extension install github/gh-actions-lock
팁
나중에 확장을 업데이트하려면 다음을 실행합니다 gh extension upgrade gh-actions-lock.
3. 잠금 파일 생성
리포지토리의 루트에서 인수 없이 확장 프로그램을 실행합니다.
.github/workflows/ 아래의 모든 워크플로를 검사하고, 확인할 수 있는 각 작업을 커밋 SHA에 고정하고, 잠금 파일을 작성합니다.
gh actions-lock
gh actions-lock
전체 디렉터리 대신 단일 워크플로를 온보딩하려면 해당 경로를 전달합니다.
gh actions-lock .github/workflows/ci.yml
gh actions-lock .github/workflows/ci.yml
확장에서 로컬 경로 작업이 지원되지 않아 워크플로를 건너뛰었다고 보고하는 경우, 이는 해당 워크플로의 uses: ./… 참조가 실제 작업 파일로 확인되지 않았음을 의미합니다. 로컬 경로는 해당 경로가 포함된 파일의 디렉터리가 아닌 리포지토리 루트에서 해석되므로 자체 파일 바로 옆에 표시되는 경로가 해석되지 않을 수 있습니다. 경로를 수정하고 명령을 다시 실행하십시오.
전체 옵션 집합에 대해 다음을 실행 gh actions-lock --help합니다.
4. 변경 내용을 검토하고 커밋하세요
확장이 lockfile 외에도 변경하므로 커밋하기 전에 전체 차이를 검토하세요. 또한 워크플로 uses 참조를 확인된 특정 버전으로 다시 작성하므로 참조 octo-org/deploy-action@v3는 octo-org/deploy-action@v3.1.0로 바뀔 수 있습니다. 이렇게 하면 해석되는 커밋을 변경하지 않고 참조를 보다 구체적으로 만듭니다.
리포지토리, 조직 또는 엔터프라이즈에서 지정된 작업만 허용하는 경우 커밋하기 전에 허용 목록을 확인합니다. 워크플로를 온보딩한 후에는 태그를 다른 코드로 이동할 수 있지만 잠긴 SHA는 이동할 수 없으므로 잠긴 커밋 SHA에 대해 허용 목록을 확인합니다. 태그(예: actions/checkout@v6)에 고정된 항목이 더 이상 일치하지 않습니다. 대신 와일드카드 또는 전체 커밋 SHA를 사용하세요.
리포지토리에 대한 GitHub Actions 설정 관리을(를) 참조하세요.
사용자 고유의 리포지토리의 작업에 대한 참조도 uses: ./…에서 해당하는 action.yml로 다시 작성되며, 워크플로와 리포지토리 내 uses: $/… 파일 모두에 적용됩니다. 참조는 $/… 항상 실행 중인 커밋으로 해결되므로 기본적으로 고정되며 잠금 파일 항목이 필요하지 않습니다.
5. 잠금 파일을 최신 상태로 유지
리포지토리의 워크플로 파일 및 보안 업데이트를 사용하여 잠금 파일을 최신 상태로 유지합니다.
-
종속성을 변경하면 확장을 다시 실행하세요.
uses에uses종속성이 있는 워크플로를 추가하거나 기존 워크플로에서gh actions-lock종속성을 추가하거나 제거할 때마다 다시 실행합니다. -
** Dependabot가 버전 범프를 처리하도록 하세요.** Dependabot가 온보딩한 워크플로에서 작업에 대한 버전 업데이트를 열면 동일한 끌어오기 요청에서 일치하는 잠금 파일 항목도 다시 생성되므로 워크플로 파일과 lockfile이 분리될 수 없습니다.
Dependabot는 워크플로를 온보딩하지 않습니다. 잠금 파일 항목이 없는 워크플로에서 종속성 버전을 업데이트하면 온보딩이 필요하다고 보고합니다.
- 이동한 참조를 다시 해결합니다. 분기 또는 부분 버전(예:
main또는v3)에 대한 참조는 잠금 파일에서 신뢰되며 일반 실행에서는 다시 해결되지 않습니다. 이제 태그가 다른 업스트림 커밋을 가리키기 때문에 확장에서 오류를 보고하는 경우 먼저 업스트림 리포지토리의 기록을 확인하세요. 이동이 정상적인 경우gh actions-lock --relock로 참조를 다시 확인합니다. 예를 들어 업스트림 리포지토리가 강제 푸시되었거나 삭제되어 원래 잠근 커밋에 더 이상 전혀 도달할 수 없는 경우에도--relock는 여전히 오류를 보고합니다. 새 커밋을 수락하려면gh actions-lock --relock --accept-moved을 실행하세요.
잠금 파일 변경 검토
다른 종속성 변경과 마찬가지로 잠금 파일의 변경 내용을 검토합니다.
- 변경된 내용
commit는 워크플로가 실행할 코드입니다. 다른 종속성 버전 범프를 다루듯이 다루세요. - 변경된 값
owner_id또는repo_id은 드문 경우여야 합니다. 즉, 해당 이름 뒤에 있는 리포지토리가 원래 잠근 리포지토리가 아니므로 병합하기 전에 조사하세요.
잠금 파일이 잘못된 것 같으면 워크플로 파일을 수정하고 잠금 파일을 다시 생성합니다. 잠금 파일을 수동으로 편집하지 마세요.
다음 단계
리포지토리에 대한 잠금 파일을 생성한 후에는 개발자가 명령을 실행하는 것을 기억할 필요가 없도록 강제 적용되고 최신 상태인지 확인합니다. 액션 종속성에 lockfile 적용을(를) 참조하세요.