Skip to main content

재사용 가능한 워크플로 참조

기존 워크플로를 다시 사용하여 워크플로를 만들 때 중복을 방지하는 방법을 알아봅니다.

재사용 가능한 워크플로에 대한 액세스

다음 중 하나라도 해당되면 재사용 가능한 워크플로를 다른 워크플로에서 사용할 수 있습니다.

다음 표에서는 호스트 리포지토리의 표시 유형에 따라 재사용 가능한 워크플로가 호출자 워크플로우에 액세스할 수 있는지를 보여줍니다.

호출자 리포지토리액세스 가능한 워크플로 리포지토리
privateprivate and public
publicpublic

호출자 리포지토리의 작업 설정 페이지에서 작업 및 재사용 가능한 워크플로를 사용할 수 있도록 작업 권한을 구성해야 합니다. 리포지토리에 대한 GitHub Actions 설정 관리을(를) 참조하세요.

프라이빗 리포지토리의 경우 호출된 워크플로 리포지토리의 작업 설정 페이지에 있는 액세스 정책을 명시적으로 구성하여 호출자 워크플로가 포함된 리포지토리의 액세스를 허용해야 합니다. 리포지토리에 대한 GitHub Actions 설정 관리을(를) 참조하세요.

참고 항목

보안을 강화하기 위해 GitHub Actions는 작업이나 재사용할 수 있는 워크플로의 리디렉션을 지원하지 않습니다. 즉, 소유자, 작업 리포지토리의 이름, 또는 작업 이름이 변경되면, 이전 이름으로 해당 작업을 사용하는 워크플로가 작동하지 않습니다.

제한 사항

  • 최대 4개 수준의 워크플로를 연결할 수 있습니다. 자세한 내용은 재사용 가능한 워크플로 중첩을 참조하세요.

  • 단일 워크플로 파일에서 최대 20개의 재사용 가능한 특정 워크플로를 호출할 수 있습니다. 이 제한에는 최상위 호출자 워크플로 파일에서 시작하여 호출할 수 있는 중첩된 재사용 가능한 워크플로의 트리가 포함됩니다.

    예시: top-level-caller-workflow.ymlcalled-workflow-1.yml → _called-workflow-2.yml_는 2개의 사용 가능한 워크플로로 계산됩니다.

  • 호출자 워크플로의 워크플로 수준에서 정의된 env 컨텍스트에서 설정된 환경 변수는 호출된 워크플로로 전파되지 않습니다. 자세한 내용은 변수에 정보 저장컨텍스트 참조을(를) 참조하세요.

  • 마찬가지로 호출된 워크플로에 정의된 env 컨텍스트에서 설정된 환경 변수는 호출자 워크플로의 env 컨텍스트에서 액세스할 수 없습니다. 대신 재사용 가능한 워크플로의 출력을 사용해야 합니다. 자세한 내용은 재사용 가능한 워크플로의 출력 사용을 참조하세요.

  • 여러 워크플로에서 변수를 다시 사용하려면 조직, 리포지토리 또는 환경 수준에서 변수를 설정하고 vars 컨텍스트를 사용하여 참조합니다. 자세한 내용은 변수에 정보 저장컨텍스트 참조을(를) 참조하세요.

  • 재사용 가능한 워크플로는 작업 단계 내에서 호출되는 것이 아니라 작업 내에서 직접 호출됩니다. 따라서 GITHUB_ENV은(는) 호출자 워크플로의 작업 단계에 값을 전달하는 데 사용할 수 없습니다.

재사용 가능한 워크플로를 호출하는 작업에 대해 지원되는 키워드

재사용 가능한 워크플로를 호출하는 경우 호출이 포함된 작업에서 다음 키워드만 사용할 수 있습니다.

재사용 가능한 워크플로에서 실행기를 사용하는 방법

GitHub에서 호스트된 실행기

GitHub 호스팅 실행기의 할당은 항상 호출자 컨텍스트만 사용하여 평가됩니다. GitHub호스팅 실행기에 대한 청구는 항상 호출자에 연결됩니다. 호출자 워크플로는 호출된 리포지토리에서 GitHub 호스팅 실행기를 사용할 수 없습니다. 자세한 내용은 GitHub 호스팅 실행기을(를) 참조하세요.

자체 호스팅 실행기

호출자 워크플로와 동일한 사용자, 조직에서 소유한 호출된 워크플로는 호출자의 컨텍스트에서 자체 호스트형 실행기에 액세스할 수 있습니다. 즉, 호출된 워크플로는 다음에 위치한 자체 호스팅 실행기에 액세스할 수 있습니다.

  • 호출자 리포지토리
  • 호출자 리포지토리의 조직에서, 호출자 리포지토리가 실행기를 사용할 수 있는 경우.

중첩된 워크플로에 대한 액세스 및 권한

중첩된 재사용 가능 워크플로를 포함하고 있는 워크플로는 중첩된 워크플로 중 하나라도 초기 호출자 워크플로에 액세스할 수 없는 경우 실패합니다. 자세한 내용은 재사용 가능한 워크플로에 대한 액세스를 참조하세요.

GITHUB_TOKEN 사용 권한은 중첩된 워크플로에서 동일하거나 더 제한적일 수 있습니다. 예를 들어 워크플로 체인 A > B > C에서 워크플로 A에 package: read 토큰 권한이 있는 경우 B와 C는 package: write 사용 권한을 가질 수 없습니다. 자세한 내용은 워크플로에서 인증에 GITHUB_TOKEN 사용을(를) 참조하세요.

API를 사용하여 특정 워크플로 실행에 관련된 워크플로 파일을 확인하는 방법에 대한 자세한 내용은 워크플로 다시 사용을(를) 참조하세요.

작업을 다시 실행할 때 재사용 가능한 워크플로의 동작

퍼블릭 리포지토리에서 재사용 가능한 워크플로는 SHA, 릴리스 태그 또는 분기 이름을 사용하여 참조할 수 있습니다. 자세한 내용은 워크플로 다시 사용을(를) 참조하세요.

재사용 가능한 워크플로를 사용하는 워크플로를 다시 실행했으며 참조가 SHA가 아닌 경우 다음과 같은 몇 가지 동작을 주의해야 합니다.

  • 워크플로에서 모든 작업을 다시 실행하면 지정된 참조에서 재사용 가능한 워크플로가 사용됩니다. 워크플로의 모든 작업을 다시 실행하는 방법에 대한 자세한 내용은 워크플로 및 작업 다시 실행을(를) 참조하세요.
  • 실패한 작업 또는 워크플로의 특정 작업을 다시 실행하면 첫 번째 시도와 동일한 커밋 SHA에서 재사용 가능한 워크플로가 사용됩니다. 워크플로에서 실패한 작업을 다시 실행하는 방법에 대한 자세한 내용은 워크플로 및 작업 다시 실행을(를) 참조하세요. 워크플로에서 특정 작업을 다시 실행하는 방법에 대한 자세한 내용은 워크플로 및 작업 다시 실행을(를) 참조하세요.

github 컨텍스트

재사용 가능한 워크플로가 호출자 워크플로에 의해 트리거되면 github 컨텍스트는 항상 호출자 워크플로와 연결됩니다. 호출된 워크플로에는 github.token에 대한 액세스 및 secrets.GITHUB_TOKEN에 대한 액세스 권한이 자동으로 부여됩니다. github 컨텍스트에 대한 자세한 내용은 컨텍스트 참조을(를) 참조하세요.