{"meta":{"title":"리포지토리의 워크플로에서 액션 종속성 잠금","intro":"워크플로에서 사용하는 모든 작업을 확인된 커밋에 고정하는 잠금 파일을 생성하고 종속성이 변경될 때 최신 상태로 유지합니다.","product":"GitHub Actions","breadcrumbs":[{"href":"/ko/actions","title":"GitHub Actions"},{"href":"/ko/actions/how-tos","title":"사용법"},{"href":"/ko/actions/how-tos/secure-your-work","title":"작업 보안"},{"href":"/ko/actions/how-tos/secure-your-work/lock-workflow-dependencies","title":"워크플로 종속성 잠금"}],"documentType":"article"},"body":"# 리포지토리의 워크플로에서 액션 종속성 잠금\n\n워크플로에서 사용하는 모든 작업을 확인된 커밋에 고정하는 잠금 파일을 생성하고 종속성이 변경될 때 최신 상태로 유지합니다.\n\n> \\[!NOTE] 워크플로 종속성 잠금 파일은 공개 미리 보기에 있으며 변경될 수 있습니다.\n\n워크플로의 종속성을 잠그면 참조된 작업에 원래 검토된 것과 동일한 코드가 포함됩니다. 자세한 내용은 [워크플로 종속성 락파일](/ko/actions/concepts/security/workflow-dependency-lockfiles)을(를) 참조하세요.\n\n## 1. 동작 참조 확인\n\n잠금 파일을 만들면 종속성이 현재 브랜치 또는 태그 참조 기준의 커밋으로 고정됩니다. 이 버전들이 제자리에 고정하려는 버전인지 확인합니다.\n\n워크플로의 각 `uses` 참조가 지원되는 현재 버전의 액션을 가리키는지 확인합니다. 모범 사례는 [안전 사용 참조](/ko/actions/reference/security/secure-use#using-third-party-actions)을 참조하세요.\n\n워크플로 중 하나라도 다른 리포지토리에서 재사용 가능한 워크플로를 호출하는 경우 해당 참조도 확인합니다. 재사용 가능한 워크플로의 종속성은 다시 사용할 수 있는 워크플로가 정의된 리포지토리의 잠금 파일에서 다룹니다. 조직에서 공유 워크플로를 유지 관리하는 경우 먼저 해당 리포지토리를 온보딩하는 것이 좋습니다.\n[워크플로 구성 재사용](/ko/actions/concepts/workflows-and-actions/reusing-workflow-configurations)을(를) 참조하세요.\n\nDependabot가 GitHub Actions 종속성을 관리하도록 하는 것을 권장합니다. 아직 사용하도록 설정되지 않은 경우 잠금 파일을 만들기 전에 사용하도록 설정합니다.\n[Dependabot을 사용하여 작업을 최신 상태로 유지](/ko/code-security/how-tos/secure-your-supply-chain/secure-your-dependencies/auto-update-actions)을(를) 참조하세요.\n\n## 2. 확장 `actions-lock` 프로그램을 설치합니다\n\n1. [\n   GitHub CLI\n   ](https://cli.github.com/)를 설치합니다.\n\n2. 익스텐션을 설치합니다.\n\n   ```bash copy\n   gh extension install github/gh-actions-lock\n   ```\n\n> \\[!TIP] 나중에 확장을 업데이트하려면 다음을 실행합니다 `gh extension upgrade gh-actions-lock`.\n\n## 3. 잠금 파일 생성\n\n리포지토리의 루트에서 인수 없이 확장 프로그램을 실행합니다.\n`.github/workflows/` 아래의 모든 워크플로를 검사하고, 확인할 수 있는 각 작업을 커밋 SHA에 고정하고, 잠금 파일을 작성합니다.\n\n```bash copy\ngh actions-lock\n```\n\n전체 디렉터리 대신 단일 워크플로를 온보딩하려면 해당 경로를 전달합니다.\n\n```bash copy\ngh actions-lock .github/workflows/ci.yml\n```\n\n확장에서 로컬 경로 작업이 지원되지 않아 워크플로를 건너뛰었다고 보고하는 경우, 이는 해당 워크플로의 `uses: ./…` 참조가 실제 작업 파일로 확인되지 않았음을 의미합니다. 로컬 경로는 해당 경로가 포함된 파일의 디렉터리가 **아닌** 리포지토리 루트에서 해석되므로 자체 파일 바로 옆에 표시되는 경로가 해석되지 않을 수 있습니다. 경로를 수정하고 명령을 다시 실행하십시오.\n\n전체 옵션 집합에 대해 다음을 실행 `gh actions-lock --help`합니다.\n\n## 4. 변경 내용을 검토하고 커밋하세요\n\n확장이 lockfile 외에도 변경하므로 커밋하기 전에 전체 차이를 검토하세요. 또한 워크플로 `uses` 참조를 확인된 특정 버전으로 다시 작성하므로 참조 `octo-org/deploy-action@v3`는 `octo-org/deploy-action@v3.1.0`로 바뀔 수 있습니다. 이렇게 하면 해석되는 커밋을 변경하지 않고 참조를 보다 구체적으로 만듭니다.\n\n리포지토리, 조직 또는 엔터프라이즈에서 지정된 작업만 허용하는 경우 커밋하기 전에 허용 목록을 확인합니다. 워크플로를 온보딩한 후에는 태그를 다른 코드로 이동할 수 있지만 잠긴 SHA는 이동할 수 없으므로 잠긴 커밋 SHA에 대해 허용 목록을 확인합니다. 태그(예: `actions/checkout@v6`)에 고정된 항목이 더 이상 일치하지 않습니다. 대신 와일드카드 또는 전체 커밋 SHA를 사용하세요.\n[리포지토리에 대한 GitHub Actions 설정 관리](/ko/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-select-actions-and-reusable-workflows-to-run)을(를) 참조하세요.\n\n사용자 고유의 리포지토리의 작업에 대한 참조도 `uses: ./…`에서 해당하는 `action.yml`로 다시 작성되며, 워크플로와 리포지토리 내 `uses: $/…` 파일 모두에 적용됩니다. 참조는 `$/…` 항상 실행 중인 커밋으로 해결되므로 기본적으로 고정되며 잠금 파일 항목이 필요하지 않습니다.\n\n## 5. 잠금 파일을 최신 상태로 유지\n\n리포지토리의 워크플로 파일 및 보안 업데이트를 사용하여 잠금 파일을 최신 상태로 유지합니다.\n\n1. **종속성을 변경하면 확장을 다시 실행하세요.**\n   `uses`에 `uses` 종속성이 있는 워크플로를 추가하거나 기존 워크플로에서 `gh actions-lock` 종속성을 추가하거나 제거할 때마다 다시 실행합니다.\n\n2. \\*\\*\n   Dependabot가 버전 범프를 처리하도록 하세요.\\*\\*\n   Dependabot가 온보딩한 워크플로에서 작업에 대한 버전 업데이트를 열면 동일한 끌어오기 요청에서 일치하는 잠금 파일 항목도 다시 생성되므로 워크플로 파일과 lockfile이 분리될 수 없습니다.\n\nDependabot는 워크플로를 **온보딩하지 않습니다**. 잠금 파일 항목이 없는 워크플로에서 종속성 버전을 업데이트하면 온보딩이 필요하다고 보고합니다.\n\n1. **이동한 참조를 다시 해결합니다.** 분기 또는 부분 버전(예: `main` 또는 `v3`)에 대한 참조는 잠금 파일에서 신뢰되며 일반 실행에서는 다시 해결되지 않습니다. 이제 태그가 다른 업스트림 커밋을 가리키기 때문에 확장에서 오류를 보고하는 경우 먼저 업스트림 리포지토리의 기록을 확인하세요. 이동이 정상적인 경우 `gh actions-lock --relock`로 참조를 다시 확인합니다. 예를 들어 업스트림 리포지토리가 강제 푸시되었거나 삭제되어 원래 잠근 커밋에 더 이상 전혀 도달할 수 없는 경우에도 `--relock`는 여전히 오류를 보고합니다. 새 커밋을 수락하려면 `gh actions-lock --relock --accept-moved`을 실행하세요.\n\n### 잠금 파일 변경 검토\n\n다른 종속성 변경과 마찬가지로 잠금 파일의 변경 내용을 검토합니다.\n\n* **변경된 내용 `commit`** 는 워크플로가 실행할 코드입니다. 다른 종속성 버전 범프를 다루듯이 다루세요.\n* **변경된 값 `owner_id` 또는 `repo_id`** 은 드문 경우여야 합니다. 즉, 해당 이름 뒤에 있는 리포지토리가 원래 잠근 리포지토리가 **아니므로** 병합하기 전에 조사하세요.\n\n잠금 파일이 잘못된 것 같으면 워크플로 파일을 수정하고 잠금 파일을 다시 생성합니다. 잠금 파일을 수동으로 편집하지 마세요.\n\n## 다음 단계\n\n리포지토리에 대한 잠금 파일을 생성한 후에는 개발자가 명령을 실행하는 것을 기억할 필요가 없도록 강제 적용되고 최신 상태인지 확인합니다.\n[액션 종속성에 lockfile 적용](/ko/actions/how-tos/administer/enforce-workflow-lockfiles)을(를) 참조하세요."}