# 워크플로 종속성 락파일

잠금 파일은 워크플로가 의존하는 모든 작업을 확인된 커밋에 고정하므로 검토한 코드가 바로 실행되는 코드입니다.

> \[!NOTE] 워크플로 종속성 잠금 파일은 공개 미리 보기에 있으며 변경될 수 있습니다.

## 워크플로 종속성을 잠그는 이유는 무엇인가요?

워크플로가 태그 또는 분기(예: `uses: octo-org/deploy-action@v3` 또는 `uses: octo-org/deploy-action@main`)로 작업을 참조하는 경우, GitHub Actions는 런타임에 해당 참조를 태그 또는 분기가 가리키는 커밋으로 확인합니다.

태그 및 분기가 이동할 수 있으므로 실행되는 코드가 워크플로 작성자가 원래 검토한 코드가 아닐 수 있습니다. 업스트림 유지 관리자의 계정이 손상되고 태그를 다시 지정하면 리포지토리가 악성 코드를 실행할 수 있습니다.

워크플로 종속성 잠금 파일은 커밋 SHA를 모든 작업(전이적 종속성 포함)과 사용자의 워크플로가 종속되는 재사용 가능한 워크플로에 고정합니다. 이렇게 하면 다음을 수행할 수 있습니다.

* 재현 가능한 빌드
* 검토 가능한 종속성 변경 및 Dependabot 버전 업데이트
* CI/CD 시스템의 종속성에 대한 감사 가능한 인벤토리

## 잠금 파일은 어떻게 작동하나요?

lockfile은 `.github/workflows/actions.lock`에 있는 리포지토리에서 정의됩니다.
`gh actions-lock`은(는) GitHub CLI 확장 프로그램에 의해 생성되며 수동으로 직접 편집해서는 안 됩니다.

리포지토리의 워크플로를 하나씩 또는 한꺼번에 잠금 파일에 온보딩할 수 있습니다. 워크플로가 온보딩된 후:

* 워크플로에서 사용하는 모든 작업 종속성은 잠금 파일에 있어야 합니다.
* 잠긴 커밋은 워크플로가 실행될 때 실행되는 항목이며, 허용된 작업 정책이 확인하는 대상입니다. 이 커밋은 원본 리포지토리의 분기 내에 있어야 합니다.

잠금 파일은 자체 리포지토리의 워크플로에 적용됩니다. 이는 전이적 종속성(즉, **사용자 작업의 종속성**이 사용하는 작업)까지 확장되며, 재사용 가능한 워크플로 호출의 종속성은 *제외하고* 적용됩니다. 재사용 가능한 워크플로는 정의된 리포지토리의 잠금 파일이 적용됩니다.

## lockfile에는 무엇이 기록되나요?

lockfile에는 두 개의 섹션이 있습니다.
`workflows`는 온보딩된 각 워크플로에서 사용하는 종속성을 기록하고, `dependencies`는 이러한 각 참조가 확인되는 커밋을 기록합니다.

```yaml
# 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/deploy-action@v3.1.0'
dependencies:
    'octo-org/deploy-action@v3.1.0':
        ref: 'v3.1.0'
        commit: 'sha1-...'
        owner_id: 44036562
        repo_id: 197814629
```

각 종속성은 다음을 기록합니다:

* **`ref`**: 워크플로에서 사용하는 참조(예: 태그 또는 브랜치)입니다.
* **`commit`**: 참조가 가리키는 정확한 커밋입니다. 실행할 코드입니다.
* **`owner_id` 및 `repo_id`**: 원본 리포지토리의 숫자 ID입니다. GitHub Actions에서는 이러한 값을 사용하여 런타임에 이름에 해당하는 리포지토리가 여전히 잠근 리포지토리와 동일한지 확인합니다.

## 잠금 파일은 SHA 고정과 비교하면 어떻습니까?

GitHub는 지금까지 워크플로 파일에서 타사 작업을 전체 길이 커밋 SHA에 고정하도록 권장해 왔습니다. 잠금 파일을 채택하는 리포지토리의 경우 워크플로 파일 내에서 SHA 고정이 **더 이상 필요하지 않습니다**. 잠금 파일은 전이적 종속성을 지원하고, 워크플로 파일을 더 쉽게 읽을 수 있게 하며, 원본 리포지토리의 ID를 기록하기 때문에 더 나은 옵션입니다.

## 다음 단계

리포지토리에 대한 잠금 파일을 만들려면 [리포지토리의 워크플로에서 액션 종속성 잠금](/ko/actions/how-tos/secure-your-work/lock-workflow-dependencies)을 참조하세요.