Skip to main content

Enterprise Server 3.20 은(는) 현재 릴리스 후보로 제공됩니다.

워크플로 구성 재사용

기존 워크플로 재사용하여 워크플로를 생성할 때 중복을 피하는 방법에 대한 정보를 찾아보세요.

이 기사에서

재사용 가능한 워크플로

재사용 가능한 워크플로의 참조 정보입니다.

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

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

  • 두 워크플로가 모두 동일한 리포지토리에 있습니다.

  • 호출된 워크플로는 GitHub Enterprise Server의 퍼블릭 리포지토리에 저장됩니다.

    GitHub.com에 정의된 재사용 가능한 워크플로는 직접 사용할 수 없습니다. 대신 GitHub Enterprise Server 인스턴스에 재사용 가능한 워크플로의 복사본을 저장한 다음, 해당 경로에서 워크플로를 호출하세요.

  • 호출된 워크플로는 내부 리포지토리에 저장되며 해당 리포지토리에 대한 설정을 통해 액세스할 수 있습니다. 자세한 내용은 엔터프라이즈와 작업 및 워크플로 공유을(를) 참조하세요.

  • 호출되는 워크플로가 비공개 리포지토리에 저장되어 있으며, 해당 리포지토리의 설정에서 접근이 허용되어 있습니다. 자세한 내용은 엔터프라이즈와 작업 및 워크플로 공유을(를) 참조하세요.

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

호출자 리포지토리액세스 가능한 워크플로 리포지토리
private
          `private`, `internal` 및 `public` |

| | | internal | internalpublic | | | | public | public |

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

내부 또는 비공개 리포지토리의 경우 호출된 워크플로의 리포지토리에 있는 Actions 설정 페이지에서 액세스 정책을 명시적으로 구성하여 호출자 워크플로를 포함하는 리포지토리에서의 접근을 허용해야 합니다. 자세한 내용은 리포지토리에 대한 GitHub Actions 설정 관리를 참조하세요.

데이터 재사용.작업.작업 리디렉션 워크플로우 %}

재사용 가능한 워크플로의 제한 사항

  • 워크플로는 최대 네 단계까지 연결할 수 있습니다. 자세한 내용은 재사용 가능한 워크플로 중첩을 참조하세요.

  • 최대 고유한 재사용 가능 워크플로를 단일 워크플로 파일에서 호출할 수 있습니다. 이 제한에는 최상위 호출자 워크플로 파일에서 시작해 호출될 수 있는 모든 중첩된 재사용 가능한 워크플로 트리가 포함됩니다.

    예시: 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` 권한을 가질 수 없습니다. 자세한 내용은 [AUTOTITLE](/actions/security-guides/automatic-token-authentication)을(를) 참조하세요.

특정 워크플로 실행에 어떤 워크플로 파일이 포함되었는지 API를 사용해 확인하는 방법은 워크플로 재사용를 참조하세요.

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

데이터 재사용 가능성.부분적 재실행과 재사용 가능성 %}

          `github` 컨텍스트

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

워크플로 템플릿

조직의 워크플로 템플릿을 만들 때 사용할 수 있는 참조 정보입니다.

워크플로 템플릿 가용성

템플릿 리포지토리와 일치하거나 더 제한적인 가용성이 있는 리포지토리에서 템플릿을 사용할 수 있습니다.

  • 퍼블릭 .github 리포지토리의 워크플로 템플릿은 모든 유형의 리포지토리에서 사용할 수 있습니다.
  • 내부 .github 리포지토리의 워크플로 템플릿은 내부 및 프라이빗 리포지토리에서만 사용할 수 있습니다.
  • 프라이빗 .github 리포지토리의 워크플로 템플릿은 프라이빗 리포지토리에서만 사용할 수 있습니다.

프라이빗/내부 리포지토리에 대한 액세스 권한 부여

프라이빗 또는 내부 .github 리포지토리를 사용하는 경우, 템플릿을 사용할 수 있도록 사용자 또는 팀에 읽기 권한을 부여해야 합니다.

          `$default-branch` 자리 표시자

리포지토리의 기본 분기를 참조해야 하는 경우, 워크플로 템플릿에서 $default-branch 자리 표시자를 사용할 수 있습니다. 워크플로가 생성될 때 자리 표시자는 리포지토리의 기본 분기 이름으로 자동으로 대체됩니다.

          `runs-on` 키의 자리 표시자 값

          `runs-on` 키의 다음 값은 자리 표시자로도 처리됩니다.

* ubuntu-latest[ self-hosted ]로 바뀝니다. * windows-latest[ self-hosted, windows ]로 바뀝니다. * macos-latest"[ self-hosted, macOS ]로 바뀝니다.

예시 워크플로 템플릿 파일

이름이 octo-organization-ci.yml로 지정된 이 파일은 기본 워크플로를 보여 줍니다.

YAML
name: Octo Organization CI
on:
  push:
    branches: [ $default-branch ]
  pull_request:
    branches: [ $default-branch ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - name: Run a one-line script
        run: echo Hello from Octo Organization

메타데이터 파일 요구 사항

메타데이터 파일의 이름은 워크플로 파일과 동일해야 하지만 .yml 확장명 대신 .properties.json을 추가해야 합니다. 예를 들어, octo-organization-ci.properties.json이라는 이름의 이 파일에는 다음과 같이 워크플로 파일에 대한 octo-organization-ci.yml라는 이름의 메타데이터가 포함됩니다.

JSON
{
    "name": "Octo Organization Workflow",
    "description": "Octo Organization CI workflow template.",
    "iconName": "example-icon",
    "categories": [
        "Go"
    ],
    "filePatterns": [
        "package.json$",
        "^Dockerfile",
        ".*\\.md$"
    ]
}
  •         `name`
             - 
            **필수입니다**. 워크플로의 이름입니다. 사용 가능한 워크플로 목록에 표시됩니다.
    
  •         `description`
             - 
            **필수입니다**. 워크플로 설명입니다. 사용 가능한 워크플로 목록에 표시됩니다.
    
  •         `iconName`
             - 
            **선택 사항**. 워크플로 목록에 표시되는 워크플로의 아이콘을 지정합니다. 
            `iconName` 은 다음 형식 중 하나일 수 있습니다.
    

    * workflow-templates 디렉터리에 저장된 SVG 파일입니다. 파일을 참조하려면 파일 확장명 없이 파일 이름이 값이어야 합니다. 예를 들어, example-icon.svg이라는 SVG 파일은 example-icon로 참조됩니다.

    • GitHub의 Octicons 집합의 아이콘입니다. 옥시콘을 참조하려면 값이 octicon <icon name>여야 합니다. 예: octicon smiley.
  •         `categories`
             - 
            **선택 사항**. 워크플로가 표시되는 범주를 정의합니다. 다음 목록에서 범주 이름을 사용할 수 있습니다.
    
    • 시작 워크플로 리포지토리의 일반 범주 이름입니다 .
    •       [linguist](https://github.com/github-linguist/linguist/blob/main/lib/linguist/languages.yml) 리포지토리에 있는 목록의 Linguist 언어입니다.
      
    •       [starter-workflows](https://github.com/github-starter-workflows/repo-analysis-partner/blob/main/tech_stacks.yml) 리포지토리의 목록에서 지원되는 기술 스택입니다.
      
  •         `filePatterns`
             - 
            **선택 사항**. 사용자 리포지토리의 루트 디렉터리에 정의된 정규식과 일치하는 파일이 있는 경우 워크플로를 사용할 수 있도록 합니다.