Skip to main content

워크플로를 트리거하는 이벤트

GitHub Enterprise Cloud에 대한 특정 작업이 예약된 시간에 발생하거나 GitHub Enterprise Cloud 외부의 이벤트가 발생할 때 실행되도록 워크플로를 구성할 수 있습니다.

워크플로를 트리거하는 이벤트 정보

워크플로 트리거는 워크플로를 실행하게 하는 이벤트입니다. 워크플로 트리거를 사용하는 방법에 대한 자세한 내용은 "워크플로 트리거"을 참조하세요.

일부 이벤트에는 여러 작업 유형이 있습니다. 해당 이벤트의 경우 워크플로 실행을 트리거할 작업 유형을 지정할 수 있습니다. 각 활동 유형의 의미에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요.

참고: 모든 웹훅 이벤트가 워크플로를 트리거하는 것은 아닙니다.

branch_protection_rule

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
branch_protection_rule- created
- edited
- deleted
기본 분기의 마지막 커밋기본 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

워크플로 리포지토리의 분기 보호 규칙이 변경되면 워크플로를 실행합니다. 브랜치 보호 규칙에 대한 자세한 내용은 "보호된 분기 정보"을 참조하세요. 브랜치 보호 규칙 API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 "분기 및 해당 설정에 대한 REST API 엔드포인트" 항목을 참조하세요.

예를 들어 분기 보호 규칙이 created 또는 deleted 상태인 경우 워크플로를 실행할 수 있습니다.

on:
  branch_protection_rule:
    types: [created, deleted]

check_run

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
check_run- created
- rerequested
- completed
- requested_action
기본 분기의 마지막 커밋기본 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

검사 실행과 관련된 작업이 발생할 때 워크플로를 실행합니다. 검사 실행은 검사 도구 모음의 일부인 개별 테스트입니다. 자세한 내용은 "REST API를 사용하여 검사 상호 작용"을 참조하세요. 검사 실행 API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 "검사 실행에 대한 REST API 엔드포인트" 항목을 참조하세요.

예를 들어 검사 실행이 rerequested 또는 completed된 경우 워크플로를 실행할 수 있습니다.

on:
  check_run:
    types: [rerequested, completed]

check_suite

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
check_suite- completed기본 분기의 마지막 커밋기본 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. completed 작업 유형만 지원되지만 작업 유형을 지정하면 나중에 더 많은 작업 형식이 추가될 경우 워크플로가 특정 상태로 유지됩니다. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

참고: 재귀 워크플로를 방지하기 위해 GitHub Actions에서 검사 도구 모음을 만든 경우 이 이벤트는 워크플로를 트리거하지 않습니다.

검사 도구 모음 작업이 발생할 때 워크플로를 실행합니다. 검사 도구 모음은 특정 커밋에 대해 생성된 검사 실행의 컬렉션입니다. 검사 도구 모음은 도구 모음에 있는 검사 실행의 상태와 결론을 요약합니다. 자세한 내용은 "REST API를 사용하여 검사 상호 작용"을 참조하세요. 검사 제품군 API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 "검사 도구 모음에 대한 REST API 엔드포인트" 항목을 참조하세요.

예를 들어 검사 도구 모음이 completed된 경우 워크플로를 실행할 수 있습니다.

on:
  check_suite:
    types: [completed]

create

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
create해당 없음만든 분기 또는 태그에 대한 마지막 커밋만든 분기 또는 태그

참고: 한 번에 세 개 이상의 태그를 만들 때 이벤트가 생성되지 않습니다.

누군가가 워크플로의 리포지토리에서 Git 참조(Git 분기 또는 태그)를 만들 때 워크플로를 실행합니다. Git 참조를 만들기 위한 API에 대한 자세한 내용은 GraphQL API 설명서의 "변형" 또는 "Git 참조에 대한 REST API 엔드포인트" 항목을 참조하세요.

예를 들어 create 이벤트가 발생할 때 워크플로를 실행할 수 있습니다.

on:
  create

delete

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
delete해당 없음기본 분기의 마지막 커밋기본 분기

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

참고: 한 번에 세 개 이상의 태그를 삭제할 때 이벤트가 생성되지 않습니다.

누군가가 워크플로의 리포지토리에서 Git 참조(Git 분기 또는 태그)를 삭제할 때 워크플로를 실행합니다. Git 참조를 삭제하는 API에 대한 자세한 내용은 GraphQL API 설명서의 "변형" 또는 "Git 참조에 대한 REST API 엔드포인트" 항목을 참조하세요.

예를 들어 delete 이벤트가 발생할 때 워크플로를 실행할 수 있습니다.

on:
  delete

deployment

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
deployment해당 없음배포할 커밋배포할 분기 또는 태그(커밋 SHA를 사용하여 만든 경우 비어 있음)

누군가가 워크플로의 리포지토리에서 배포를 만들 때 워크플로를 실행합니다. 커밋 SHA로 생성된 배포에는 Git 참조가 없을 수 있습니다. 배포를 생성하기 위한 API에 대한 자세한 내용은 GraphQL API 설명서의 "변형" 또는 "리포지토리에 대한 REST API 엔드포인트"을 참조하세요.

예를 들어 deployment 이벤트가 발생할 때 워크플로를 실행할 수 있습니다.

on:
  deployment

deployment_status

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
deployment_status해당 없음배포할 커밋배포할 분기 또는 태그(커밋할 경우 비어 있음)

참고: 배포 상태의 상태가 inactive로 설정되면 워크플로 실행이 트리거되지 않습니다.

타사에서 배포 상태를 제공하는 경우 워크플로를 실행합니다. 커밋 SHA로 생성된 배포에는 Git 참조가 없을 수 있습니다. 배포 상태를 생성하기 위한 API에 대한 자세한 내용은 GraphQL API 설명서의 "변형" 또는 "배포에 대한 REST API 엔드포인트" 항목을 참조하세요.

예를 들어 deployment_status 이벤트가 발생할 때 워크플로를 실행할 수 있습니다.

on:
  deployment_status

discussion

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
discussion- created
- edited
- deleted
- transferred
- pinned
- unpinned
- labeled
- unlabeled
- locked
- unlocked
- category_changed
- answered
- unanswered
기본 분기의 마지막 커밋기본 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

참고: GitHub Discussions에 대한 웹후크 이벤트는 현재 베타 버전이며 변경될 수 있습니다.

워크플로의 리포지토리에서 토론이 만들어지거나 수정될 때 워크플로를 실행합니다. 토론의 댓글과 관련된 작업의 경우 discussion_comment 이벤트를 사용합니다. 토론에 대한 자세한 내용은 "토론 정보"을 참조하세요. GraphQL API에 대한 자세한 내용은 "개체"을 참조하십시오.

예를 들어 토론이 created, edited 또는 answered 된 경우 워크플로를 실행할 수 있습니다.

on:
  discussion:
    types: [created, edited, answered]

discussion_comment

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
discussion_comment- created
- edited
- deleted
기본 분기의 마지막 커밋기본 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

참고: GitHub Discussions에 대한 웹후크 이벤트는 현재 베타 버전이며 변경될 수 있습니다.

워크플로의 리포지토리에서 토론의 댓글이 만들어지거나 수정될 때 워크플로를 실행합니다. 토론 댓글이 아닌 토론 관련 작업의 경우 discussion 이벤트를 사용합니다. 토론에 대한 자세한 내용은 "토론 정보"을 참조하세요. GraphQL API에 대한 자세한 내용은 "개체"을 참조하십시오.

예를 들어 토론 댓글이 created 또는 deleted된 경우 워크플로를 실행할 수 있습니다.

on:
  discussion_comment:
    types: [created, deleted]

fork

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
fork해당 없음기본 분기의 마지막 커밋기본 분기

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

누군가가 리포지토리를 포크할 때 워크플로를 실행합니다. REST API에 대한 자세한 내용은 "포크에 대한 REST API 엔드포인트"을 참조하십시오.

예를 들어 fork 이벤트가 발생할 때 워크플로를 실행할 수 있습니다.

on:
  fork

gollum

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
gollum해당 없음기본 분기의 마지막 커밋기본 분기

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

누군가가 Wiki 페이지를 만들거나 업데이트할 때 워크플로를 실행합니다. 자세한 내용은 "위키 정보"을(를) 참조하세요.

예를 들어 gollum 이벤트가 발생할 때 워크플로를 실행할 수 있습니다.

on:
  gollum

issue_comment

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
issue_comment- created
- edited
- deleted
기본 분기의 마지막 커밋기본 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

문제 또는 끌어오기 요청 설명이 생성, 편집 또는 삭제될 때 워크플로를 실행합니다. 이슈 댓글 API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 REST API 설명서의 "웹후크 이벤트 및 페이로드"을 참조하세요.

예를 들어 문제 또는 끌어오기 요청 설명이 created 또는 deleted된 경우 워크플로를 실행할 수 있습니다.

on:
  issue_comment:
    types: [created, deleted]

문제 전용 또는 끌어오기 요청 전용 issue_comment

issue_comment 이벤트는 문제 및 끌어오기 요청 모두에 대한 설명에 대해 발생합니다. 조건에서 github.event.issue.pull_request 속성을 사용하여 트리거하는 개체가 문제인지 끌어오기 요청인지에 따라 다른 작업을 수행할 수 있습니다.

예를 들어 이 워크플로는 issue_comment 이벤트가 끌어오기 요청에서 시작된 경우에만 pr_commented 작업을 실행합니다. issue_comment 이벤트가 문제에서 시작된 경우에만 issue_commented 작업을 실행합니다.

on: issue_comment

jobs:
  pr_commented:
    # This job only runs for pull request comments
    name: PR comment
    if: ${{ github.event.issue.pull_request }}
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo A comment on PR $NUMBER
        env:
          NUMBER: ${{ github.event.issue.number }}

  issue_commented:
    # This job only runs for issue comments
    name: Issue comment
    if: ${{ !github.event.issue.pull_request }}
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo A comment on issue $NUMBER
        env:
          NUMBER: ${{ github.event.issue.number }}

issues

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
issues- opened
- edited
- deleted
- transferred
- pinned
- unpinned
- closed
- reopened
- assigned
- unassigned
- labeled
- unlabeled
- locked
- unlocked
- milestoned
- demilestoned
기본 분기의 마지막 커밋기본 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

워크플로의 리포지토리에서 문제가 만들어지거나 수정될 때 워크플로를 실행합니다. 문제의 설명과 관련된 작업의 경우 issue_comment 이벤트를 사용합니다. 문제에 대한 자세한 내용은 "문제 정보"을 참조하세요. 이슈 API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 "이슈에 대한 REST API 엔드포인트" 항목을 참조하세요.

예를 들어 문제가 opened, edited 또는 milestoned된 경우 워크플로를 실행할 수 있습니다.

on:
  issues:
    types: [opened, edited, milestoned]

label

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
label- created
- edited
- deleted
기본 분기의 마지막 커밋기본 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

워크플로의 리포지토리에서 레이블이 만들어지거나 수정될 때 워크플로를 실행합니다. 레이블에 대한 자세한 내용은 "레이블 관리"을 참조하십시오. 레이블 API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 "레이블에 대한 REST API 엔드포인트" 항목을 참조하세요.

레이블이 문제, 끌어오기 요청 또는 토론에서 추가되거나 제거될 때 워크플로를 실행하려면 issues, pull_request, pull_request_target 또는 discussion 이벤트 대신 labeled 또는 unlabeled 작업 유형을 사용합니다.

예를 들어 레이블이 created 또는 deleted된 경우 워크플로를 실행할 수 있습니다.

on:
  label:
    types: [created, deleted]

merge_group

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
merge_groupchecks_requested병합 그룹의 SHA병합 그룹의 참조

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. checks_requested 작업 유형만 지원되지만 작업 유형을 지정하면 나중에 더 많은 작업 형식이 추가될 경우 워크플로가 특정 상태로 유지됩니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하십시오. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

끌어오기 요청이 병합 큐에 추가되면 워크플로를 실행합니다. 그러면 병합 그룹에 끌어오기 요청이 추가됩니다. 자세한 내용은 "병합 큐와 끌어오기 요청 병합"을 참조하십시오.

예를 들어 checks_requested 작업이 발생한 경우 워크플로를 실행할 수 있습니다.

on:
  merge_group:
    types: [checks_requested]

milestone

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
milestone- created
- closed
- opened
- edited
- deleted
기본 분기의 마지막 커밋기본 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

워크플로의 리포지토리에서 마일스톤이 만들어지거나 수정될 때 워크플로를 실행합니다. 마일스톤에 대한 자세한 내용은 "마일스톤 정보"을 참조하십시오. 마일스톤 API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 "마일스톤에 대한 REST API 엔드포인트" 항목을 참조하세요.

마일스톤에 문제가 추가되거나 제거될 때 워크플로를 실행하려면 issues 이벤트 대신 milestoned 또는 demilestoned 작업 유형을 사용합니다.

예를 들어 마일스톤이 opened 또는 deleted된 경우 워크플로를 실행할 수 있습니다.

on:
  milestone:
    types: [opened, deleted]

page_build

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
page_build해당 없음기본 분기의 마지막 커밋해당 없음

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

GitHub Pages가 리포지토리에 대해 사용하도록 설정된 경우 누군가가 GitHub Pages의 게시 원본인 분기로 푸시할 때 워크플로를 실행합니다. 데이터 변수 GitHub Pages 퍼블리싱 소스에 대한 자세한 내용은 "GitHub Pages 사이트에 대한 게시 원본 구성"을 참조하십시오. REST API에 대한 자세한 내용은 "리포지토리에 대한 REST API 엔드포인트"을 참조하십시오.

예를 들어 page_build 이벤트가 발생할 때 워크플로를 실행할 수 있습니다.

on:
  page_build

project

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
project- created
- closed
- reopened
- edited
- deleted
기본 분기의 마지막 커밋기본 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. edited 활동 유형은 프로젝트(클래식)의 열이나 카드가 아닌 프로젝트(클래식)이(가) 편집되는 경우를 나타냅니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하십시오. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

참고: 이 이벤트는 조직이 소유하거나 사용자가 소유한 프로젝트 또는 다른 리포지토리가 소유한 프로젝트가 아닌 워크플로 리포지토리가 소유한 프로젝트에 대해서만 발생합니다.

참고: 이 이벤트는 projects (classic)에 대해서만 발생합니다.

프로젝트(클래식)을(를) 생성하거나 수정할 때 워크플로를 실행합니다. 프로젝트(클래식)의 카드 또는 열과 관련된 활동의 경우 project_card 또는 project_column 이벤트를 대신 사용합니다. 프로젝트(클래식)에 대한 자세한 내용은 "projects (classic) 정보"을(를) 참조하세요. 프로젝트(클래식) API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 "Projects (classic)에 대한 REST API 엔드포인트" 항목을 참조하세요.

예를 들어 프로젝트가 created 또는 deleted된 경우 워크플로를 실행할 수 있습니다.

on:
  project:
    types: [created, deleted]

project_card

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
project_card- created
- moved
- 문제로 converted
- edited
- deleted
기본 분기의 마지막 커밋기본 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

참고: 이 이벤트는 조직이 소유하거나 사용자가 소유한 프로젝트 또는 다른 리포지토리가 소유한 프로젝트가 아닌 워크플로 리포지토리가 소유한 프로젝트에 대해서만 발생합니다.

참고: 이 이벤트는 projects (classic)에 대해서만 발생합니다.

프로젝트(클래식)에서 카드를 생성하거나 수정할 때 워크플로를 실행합니다. 프로젝트(클래식) 또는 프로젝트(클래식)의 열과 관련된 활동의 경우 project 또는 project_column 이벤트를 대신 사용합니다. 프로젝트(클래식)에 대한 자세한 내용은 "projects (classic) 정보"을(를) 참조하세요. 프로젝트 카드 API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 "Project (classic) 카드에 대한 REST API 엔드포인트" 항목을 참조하세요.

예를 들어 프로젝트 카드가 created 또는 deleted된 경우 워크플로를 실행할 수 있습니다.

on:
  project_card:
    types: [created, deleted]

project_column

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
project_column- created
- updated
- moved
- deleted
기본 분기의 마지막 커밋기본 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

참고: 이 이벤트는 조직이 소유하거나 사용자가 소유한 프로젝트 또는 다른 리포지토리가 소유한 프로젝트가 아닌 워크플로 리포지토리가 소유한 프로젝트에 대해서만 발생합니다.

참고: 이 이벤트는 projects (classic)에 대해서만 발생합니다.

프로젝트(클래식)에서 열을 생성하거나 수정할 때 워크플로를 실행합니다. 프로젝트(클래식) 또는 프로젝트(클래식)의 카드와 관련된 활동의 경우 project 또는 project_card 이벤트를 대신 사용합니다. 프로젝트(클래식)에 대한 자세한 내용은 "projects (classic) 정보"을(를) 참조하세요. 프로젝트 열 API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 "Projects (classic)에 대한 REST API 엔드포인트" 항목을 참조하세요.

예를 들어 프로젝트 열이 created 또는 deleted된 경우 워크플로를 실행할 수 있습니다.

on:
  project_column:
    types: [created, deleted]

public

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
public해당 없음기본 분기의 마지막 커밋기본 분기

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

워크플로의 리포지토리가 프라이빗에서 퍼블릭으로 변경되면 워크플로를 실행합니다. REST API에 대한 자세한 내용은 "리포지토리에 대한 REST API 엔드포인트"을 참조하십시오.

예를 들어 public 이벤트가 발생할 때 워크플로를 실행할 수 있습니다.

on:
  public

pull_request

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
pull_request- assigned
- unassigned
- labeled
- unlabeled
- opened
- edited
- closed
- reopened
- synchronize
- converted_to_draft
- locked
- unlocked
- enqueued
- dequeued
- milestoned
- demilestoned
- ready_for_review
- review_requested
- review_request_removed
- auto_merge_enabled
- auto_merge_disabled
GITHUB_REF 분기의 마지막 병합 커밋PR 병합 분기 refs/pull/PULL_REQUEST_NUMBER/merge

참고:

  • 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을(를) 참조하세요. 기본적으로 워크플로는 pull_request 이벤트의 작업 유형이 opened, synchronize 또는 reopened인 경우에만 실행됩니다. 다양한 작업 유형별로 워크플로를 트리거하려면 types 키워드를 사용합니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을(를) 참조하세요.

  • 끌어오기 요청에 병합 충돌이 있는 경우 워크플로는 pull_request 작업에서 실행되지 않습니다. 병합 충돌을 먼저 해결해야 합니다.

    반대로 끌어오기 요청에 병합 충돌이 있는 경우에도 pull_request_target 이벤트가 있는 워크플로가 실행됩니다. pull_request_target 트리거를 사용하기 전에 보안 위험을 알고 있어야 합니다. 자세한 내용은 pull_request_target를 참조하세요.

  • pull_request 웹후크 이벤트 페이로드는 포크된 리포지토리에서 가져온 병합된 끌어오기 요청 및 끌어오기 요청에 대해 비어 있습니다.

  • 끌어오기 요청이 병합되었는지 여부에 따라 종료된 끌어오기 요청에 대한 GITHUB_REF 값이 달라집니다. 끌어오기 요청이 종료되었지만 병합되지 않은 경우 refs/pull/PULL_REQUEST_NUMBER/merge이(가) 됩니다. 병합된 결과로 끌어오기 요청이 종료된 경우 병합된 분기의 ref에 대해 정규화됩니다. 예를 들면 /refs/heads/main와(과) 같습니다.

워크플로 리포지토리의 끌어오기 요청에 대한 작업이 발생할 때 워크플로를 실행합니다. 예를 들어 작업 형식이 지정되지 않은 경우 끌어오기 요청이 열리거나 다시 열리거나 끌어오기 요청의 헤드 분기가 업데이트될 때 워크플로가 실행됩니다. 끌어오기 요청 검토, 끌어오기 요청 검토 주석 또는 끌어오기 요청 주석과 관련된 작업의 경우 pull_request_review, pull_request_review_comment, 또는 issue_comment 이벤트를 대신 사용합니다. 끌어오기 요청 API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 "끌어오기 요청에 대한 REST API 엔드포인트" 항목을 참조하세요.

이 이벤트의 GITHUB_SHA는 끌어오기 요청 병합 분기의 마지막 병합 커밋입니다. 끌어오기 요청 헤드 분기의 마지막 커밋에 대한 커밋 ID를 가져오려면 github.event.pull_request.head.sha를 대신 사용합니다.

예를 들어 끌어오기 요청을 열거나 다시 열 때 워크플로를 실행할 수 있습니다.

on:
  pull_request:
    types: [opened, reopened]

이벤트 컨텍스트를 사용하여 워크플로의 작업이 실행되는 시기를 추가로 제어할 수 있습니다. 예를 들어 이 워크플로는 끌어오기 요청에 대한 검토가 요청될 때 실행되지만 specific_review_requested에 의한 검토가 요청된 경우에만 octo-team 작업이 실행됩니다.

on:
  pull_request:
    types: [review_requested]
jobs:
  specific_review_requested:
    runs-on: ubuntu-latest
    if: ${{ github.event.requested_team.name == 'octo-team'}}
    steps:
      - run: echo 'A review from octo-team was requested'

풀 리퀘스트의 헤드 또는 베이스 브랜치를 기반으로 pull_request 워크플로 실행하기

branches 또는 branches-ignore 필터를 사용하여 특정 분기를 대상으로 하는 끌어오기 요청에서만 실행되도록 워크플로를 구성할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을(를) 참조하세요.

예를 들어 이 워크플로는 이름이 releases/로 시작하는 분기를 대상으로 하는 끌어오기 요청을 열 때 실행됩니다.

on:
  pull_request:
    types:
      - opened
    branches:
      - 'releases/**'

참고: branches 필터와 paths 필터를 둘 다 사용하는 경우 두 필터가 모두 충족될 때만 워크플로가 실행됩니다. 예를 들어 다음 워크플로는 이름이 .js로 시작하는 분기에서 JavaScript(releases/) 파일 변경을 포함하는 끌어오기 요청을 여는 경우에만 실행됩니다.

on:
  pull_request:
    types:
      - opened
    branches:
      - 'releases/**'
    paths:
      - '**.js'

(끌어오기 요청의 베이스 분기 이름이 아닌) 끌어오기 요청의 헤드 분기 이름에 따라 작업을 실행하려면 조건부에서 github.head_ref 컨텍스트를 사용합니다. 예를 들어 이 워크플로는 끌어오기 요청이 열릴 때마다 실행되지만 끌어오기 요청의 헤드가 이름이 releases/로 시작하는 분기인 경우에만 run_if 작업이 실행됩니다.

on:
  pull_request:
    types:
      - opened
jobs:
  run_if:
    if:  startsWith(github.head_ref, 'releases/')
    runs-on: ubuntu-latest
    steps:
      - run: echo "The head of this PR starts with 'releases/'"

풀 리퀘스트에서 변경된 파일을 기반으로 pull_request 워크플로 실행하기

끌어오기 요청이 특정 파일을 변경할 때 실행되도록 워크플로를 구성할 수도 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을(를) 참조하세요.

예를 들어 끌어오기 요청에 JavaScript 파일(.js) 변경 내용이 포함된 경우 이 워크플로가 실행됩니다.

on:
  pull_request:
    paths:
      - '**.js'

참고: branches 필터와 paths 필터를 둘 다 사용하는 경우 두 필터가 모두 충족될 때만 워크플로가 실행됩니다. 예를 들어 다음 워크플로는 이름이 .js로 시작하는 분기에서 JavaScript(releases/) 파일 변경을 포함하는 끌어오기 요청을 여는 경우에만 실행됩니다.

on:
  pull_request:
    types:
      - opened
    branches:
      - 'releases/**'
    paths:
      - '**.js'

풀 리퀘스트가 병합될 때 pull_request 워크플로 실행하기

끌어오기 요청이 병합되면 끌어오기 요청이 자동으로 닫힙니다. 끌어오기 요청이 병합되는 경우 워크플로를 실행하려면 merged 이벤트 값을 확인하는 조건과 함께 pull_request closed 이벤트 형식을 사용합니다. 예를 들어 끌어오기 요청이 닫힐 때마다 다음 워크플로가 실행됩니다. 끌어오기 요청도 병합된 경우에만 if_merged 작업이 실행됩니다.

on:
  pull_request:
    types:
      - closed

jobs:
  if_merged:
    if: github.event.pull_request.merged == true
    runs-on: ubuntu-latest
    steps:
    - run: |
        echo The PR was merged

포크된 리포지토리의 워크플로

워크플로는 기본적으로 포크된 리포지토리에서 실행되지 않습니다. 포크된 리포지토리의 Actions(작업) 탭에서 GitHub Actions를 사용하도록 설정해야 합니다.

GITHUB_TOKEN의 예외를 제외하고 포크된 리포지토리에서 워크플로가 트리거될 때 비밀이 실행기에게 전달되지 않습니다. GITHUB_TOKEN에는 포크된 리포지토리 끌어오기 요청의 읽기 전용 권한이 있습니다. 자세한 내용은 "자동 토큰 인증"을 참조하세요.

포크된 리포지토리에 대한 끌어오기 요청 이벤트

포크된 리포지토리에서 기본 리포지토리로의 끌어오기 요청의 경우 GitHub Enterprise Cloud는 기본 리포지토리에 pull_request, issue_comment, pull_request_review_comment, pull_request_review, pull_request_target 이벤트를 보냅니다. 포크된 리포지토리에서는 끌어오기 요청 이벤트가 발생하지 않습니다.

처음으로 참가자가 퍼블릭 리포지토리에 끌어오기 요청을 제출하는 경우, 끌어오기 요청에 대해 쓰기 액세스 권한이 있는 유지 관리자가 실행 중인 워크플로를 승인해야 할 수 있습니다. 자세한 내용은 "퍼블릭 포크에서 워크플로 실행 승인"을 참조하세요.

포크된 리포지토리에서 프라이빗 리포지토리로 끌어오기 요청은 워크플로가 활성화 상태일 때만 실행됩니다. "리포지토리에 대한 GitHub Actions 설정 관리"을 참조하세요.

참고: Dependabot 끌어오기 요청에 의해 트리거되는 워크플로는 포크된 리포지토리에서 온 것처럼 처리되며 관련 제한 사항도 적용됩니다.

pull_request_comment(issue_comment 사용)

(끌어오기 요청의 diff가 아닌) 끌어오기 요청에 대한 주석이 생성, 편집 또는 삭제될 때 워크플로를 실행하려면 issue_comment 이벤트를 사용합니다. 끌어오기 요청 검토 또는 끌어오기 요청 검토 주석과 관련된 활동의 경우 pull_request_review 또는 pull_request_review_comment 이벤트를 대신 사용합니다.

pull_request_review

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
pull_request_review- submitted
- edited
- dismissed
GITHUB_REF 분기의 마지막 병합 커밋PR 병합 분기 refs/pull/PULL_REQUEST_NUMBER/merge

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

끌어오기 요청 검토가 제출되거나 편집되거나 해제될 때 워크플로를 실행합니다. 끌어오기 요청 검토는 본문 주석 및 상태 외에도 끌어오기 요청 검토 주석 그룹입니다. 끌어오기 요청 검토 주석 또는 끌어오기 요청 주석과 관련된 활동의 경우 pull_request_review_comment 또는 issue_comment 이벤트를 대신 사용합니다. 끌어오기 요청 검토 API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 "끌어오기 요청에 대한 REST API 엔드포인트" 항목을 참조하세요.

예를 들어 끌어오기 요청 검토가 edited 또는 dismissed될 때 워크플로를 실행할 수 있습니다.

on:
  pull_request_review:
    types: [edited, dismissed]

끌어오기 요청이 승인될 때 워크플로 실행

끌어오기 요청이 승인되었을 때 워크플로를 실행하려면 submitted 이벤트 유형으로 워크플로를 pull_request_review 트리거한 다음 github.event.review.state 속성으로 검토 상태를 확인할 수 있습니다. 예를 들어 이 워크플로는 끌어오기 요청 검토가 제출될 때마다 실행되지만 제출된 검토가 승인 검토인 경우에만 approved 작업이 실행됩니다.

on:
  pull_request_review:
    types: [submitted]

jobs:
  approved:
    if: github.event.review.state == 'APPROVED'
    runs-on: ubuntu-latest
    steps:
      - run: echo "This PR was approved"

포크된 리포지토리의 워크플로

워크플로는 기본적으로 포크된 리포지토리에서 실행되지 않습니다. 포크된 리포지토리의 Actions(작업) 탭에서 GitHub Actions를 사용하도록 설정해야 합니다.

GITHUB_TOKEN의 예외를 제외하고 포크된 리포지토리에서 워크플로가 트리거될 때 비밀이 실행기에게 전달되지 않습니다. GITHUB_TOKEN에는 포크된 리포지토리 끌어오기 요청의 읽기 전용 권한이 있습니다. 자세한 내용은 "자동 토큰 인증"을 참조하세요.

포크된 리포지토리에 대한 끌어오기 요청 이벤트

포크된 리포지토리에서 기본 리포지토리로의 끌어오기 요청의 경우 GitHub Enterprise Cloud는 기본 리포지토리에 pull_request, issue_comment, pull_request_review_comment, pull_request_review, pull_request_target 이벤트를 보냅니다. 포크된 리포지토리에서는 끌어오기 요청 이벤트가 발생하지 않습니다.

처음으로 참가자가 퍼블릭 리포지토리에 끌어오기 요청을 제출하는 경우, 끌어오기 요청에 대해 쓰기 액세스 권한이 있는 유지 관리자가 실행 중인 워크플로를 승인해야 할 수 있습니다. 자세한 내용은 "퍼블릭 포크에서 워크플로 실행 승인"을 참조하세요.

포크된 리포지토리에서 프라이빗 리포지토리로 끌어오기 요청은 워크플로가 활성화 상태일 때만 실행됩니다. "리포지토리에 대한 GitHub Actions 설정 관리"을 참조하세요.

참고: Dependabot 끌어오기 요청에 의해 트리거되는 워크플로는 포크된 리포지토리에서 온 것처럼 처리되며 관련 제한 사항도 적용됩니다.

pull_request_review_comment

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
pull_request_review_comment- created
- edited
- deleted
GITHUB_REF 분기의 마지막 병합 커밋PR 병합 분기 refs/pull/PULL_REQUEST_NUMBER/merge

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

끌어오기 요청 검토 주석이 수정되면 워크플로를 실행합니다. 끌어오기 요청 검토 주석은 끌어오기 요청의 diff에 대한 주석입니다. 끌어오기 요청 검토 또는 끌어오기 요청 주석과 관련된 활동의 경우 pull_request_review 또는 issue_comment 이벤트를 대신 사용합니다. 끌어오기 요청 검토 메모 API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 "끌어오기 요청에 대한 REST API 엔드포인트" 항목을 참조하세요.

예를 들어 끌어오기 요청 검토 주석이 created 또는 deleted될 때 워크플로를 실행할 수 있습니다.

on:
  pull_request_review_comment:
    types: [created, deleted]

포크된 리포지토리의 워크플로

워크플로는 기본적으로 포크된 리포지토리에서 실행되지 않습니다. 포크된 리포지토리의 Actions(작업) 탭에서 GitHub Actions를 사용하도록 설정해야 합니다.

GITHUB_TOKEN의 예외를 제외하고 포크된 리포지토리에서 워크플로가 트리거될 때 비밀이 실행기에게 전달되지 않습니다. GITHUB_TOKEN에는 포크된 리포지토리 끌어오기 요청의 읽기 전용 권한이 있습니다. 자세한 내용은 "자동 토큰 인증"을 참조하세요.

포크된 리포지토리에 대한 끌어오기 요청 이벤트

포크된 리포지토리에서 기본 리포지토리로의 끌어오기 요청의 경우 GitHub Enterprise Cloud는 기본 리포지토리에 pull_request, issue_comment, pull_request_review_comment, pull_request_review, pull_request_target 이벤트를 보냅니다. 포크된 리포지토리에서는 끌어오기 요청 이벤트가 발생하지 않습니다.

처음으로 참가자가 퍼블릭 리포지토리에 끌어오기 요청을 제출하는 경우, 끌어오기 요청에 대해 쓰기 액세스 권한이 있는 유지 관리자가 실행 중인 워크플로를 승인해야 할 수 있습니다. 자세한 내용은 "퍼블릭 포크에서 워크플로 실행 승인"을 참조하세요.

포크된 리포지토리에서 프라이빗 리포지토리로 끌어오기 요청은 워크플로가 활성화 상태일 때만 실행됩니다. "리포지토리에 대한 GitHub Actions 설정 관리"을 참조하세요.

참고: Dependabot 끌어오기 요청에 의해 트리거되는 워크플로는 포크된 리포지토리에서 온 것처럼 처리되며 관련 제한 사항도 적용됩니다.

pull_request_target

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
pull_request- assigned
- unassigned
- labeled
- unlabeled
- opened
- edited
- closed
- reopened
- synchronize
- converted_to_draft
- ready_for_review
- locked
- unlocked
- review_requested
- review_request_removed
- auto_merge_enabled
- auto_merge_disabled
PR 베이스 분기의 마지막 커밋PR 베이스 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 워크플로는 pull_request_target 이벤트의 작업 유형이 opened, synchronize 또는 reopened인 경우에만 실행됩니다. 다양한 작업 유형별로 워크플로를 트리거하려면 types 키워드를 사용합니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을(를) 참조하세요.

워크플로 리포지토리의 끌어오기 요청에 대한 작업이 발생할 때 워크플로를 실행합니다. 예를 들어 작업 형식이 지정되지 않은 경우 끌어오기 요청이 열리거나 다시 열리거나 끌어오기 요청의 헤드 분기가 업데이트될 때 워크플로가 실행됩니다.

이 이벤트는 pull_request 이벤트와 마찬가지로 병합 커밋의 컨텍스트가 아닌 끌어오기 요청의 베이스 컨텍스트에서 실행됩니다. 이렇게 하면 리포지토리를 변경하거나 워크플로에서 사용하는 비밀을 도용할 수 있는 끌어오기 요청의 헤드에서 안전하지 않은 코드가 실행되지 않습니다. 이 이벤트를 사용하면 워크플로에서 포크의 끌어오기 요청에 대한 레이블 또는 주석과 같은 작업을 수행할 수 있습니다. 끌어오기 요청에서 코드를 빌드하거나 실행해야 하는 경우 이 이벤트를 사용하지 마세요.

리포지토리 보안을 보장하기 위해 특정 패턴(예: SHA와 유사한 패턴)과 일치하는 이름을 가진 분기가 pull_request_target 이벤트 발생 시 워크플로를 트리거하지 않을 수 있습니다.

경고: pull_request_target 이벤트에 의해 트리거되는 워크플로의 경우 permissions 키를 지정하지 않으면 GITHUB_TOKEN에 읽기/쓰기 리포지토리 권한이 부여되고 워크플로는 포크에서 트리거되는 경우에도 비밀에 액세스할 수 있습니다. 워크플로는 끌어오기 요청의 베이스 컨텍스트에서 실행되지만 이 이벤트를 사용하여 끌어오기 요청에서 신뢰할 수 없는 코드를 체크 아웃하거나 빌드하거나 실행하지 않아야 합니다. 또한 모든 캐시는 베이스 분기와 동일한 범위를 공유합니다. 캐시 중독을 방지하기 위해 캐시 내용이 변경되었을 가능성이 있는 경우 캐시를 저장하면 안 됩니다. 자세한 내용은 GitHub Security Lab 웹 사이트에서 “GitHub Actions 및 워크플로 보안 유지: pwn 요청 방지”를 참조하세요.

예를 들어 끌어오기 요청이 assigned, opened, synchronize, 또는 reopened될 때 워크플로를 실행할 수 있습니다.

on:
  pull_request_target:
    types: [assigned, opened, synchronize, reopened]

풀 리퀘스트의 헤드 또는 베이스 브랜치를 기반으로 pull_request_target 워크플로 실행하기

branches 또는 branches-ignore 필터를 사용하여 특정 분기를 대상으로 하는 끌어오기 요청에서만 실행되도록 워크플로를 구성할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을(를) 참조하세요.

예를 들어 이 워크플로는 이름이 releases/로 시작하는 분기를 대상으로 하는 끌어오기 요청을 열 때 실행됩니다.

on:
  pull_request_target:
    types:
      - opened
    branches:
      - 'releases/**'

참고: branches 필터와 paths 필터를 둘 다 사용하는 경우 두 필터가 모두 충족될 때만 워크플로가 실행됩니다. 예를 들어 다음 워크플로는 이름이 .js로 시작하는 분기에서 JavaScript(releases/) 파일 변경을 포함하는 끌어오기 요청을 여는 경우에만 실행됩니다.

on:
  pull_request_target:
    types:
      - opened
    branches:
      - 'releases/**'
    paths:
      - '**.js'

(끌어오기 요청의 베이스 분기 이름이 아닌) 끌어오기 요청의 헤드 분기 이름에 따라 작업을 실행하려면 조건부에서 github.head_ref 컨텍스트를 사용합니다. 예를 들어 이 워크플로는 끌어오기 요청이 열릴 때마다 실행되지만 끌어오기 요청의 헤드가 이름이 releases/로 시작하는 분기인 경우에만 run_if 작업이 실행됩니다.

on:
  pull_request_target:
    types:
      - opened
jobs:
  run_if:
    if:  startsWith(github.head_ref, 'releases/')
    runs-on: ubuntu-latest
    steps:
      - run: echo "The head of this PR starts with 'releases/'"

풀 리퀘스트에서 변경된 파일을 기반으로 pull_request_target 워크플로 실행하기

끌어오기 요청이 특정 파일을 변경할 때 실행되도록 paths 또는 paths-ignore 필터를 사용하여 워크플로를 구성할 수도 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을(를) 참조하세요.

예를 들어 끌어오기 요청에 JavaScript 파일(.js) 변경 내용이 포함된 경우 이 워크플로가 실행됩니다.

on:
  pull_request_target:
    paths:
      - '**.js'

참고: branches 필터와 paths 필터를 둘 다 사용하는 경우 두 필터가 모두 충족될 때만 워크플로가 실행됩니다. 예를 들어 다음 워크플로는 이름이 .js로 시작하는 분기에서 JavaScript(releases/) 파일 변경을 포함하는 끌어오기 요청을 여는 경우에만 실행됩니다.

on:
  pull_request_target:
    types:
      - opened
    branches:
      - 'releases/**'
    paths:
      - '**.js'

풀 리퀘스트가 병합될 때 pull_request_target 워크플로 실행하기

끌어오기 요청이 병합되면 끌어오기 요청이 자동으로 닫힙니다. 끌어오기 요청이 병합되는 경우 워크플로를 실행하려면 merged 이벤트 값을 확인하는 조건과 함께 pull_request_target closed 이벤트 형식을 사용합니다. 예를 들어 끌어오기 요청이 닫힐 때마다 다음 워크플로가 실행됩니다. 끌어오기 요청도 병합된 경우에만 if_merged 작업이 실행됩니다.

on:
  pull_request_target:
    types:
      - closed

jobs:
  if_merged:
    if: github.event.pull_request.merged == true
    runs-on: ubuntu-latest
    steps:
    - run: |
        echo The PR was merged

push

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
push해당 없음분기를 삭제하면 워크플로의 SHA 실행(및 관련 참조)이 리포지토리의 기본 분기로 되돌아갑니다.업데이트된 참조

참고: GitHub Actions에서 사용할 수 있는 웹후크 페이로드는 commit 개체의 added, removedmodified 특성을 포함하지 않습니다. API를 사용하여 전체 커밋 개체를 검색할 수 있습니다. 자세한 내용은 GraphQL API 설명서의 "개체" 또는 "커밋에 대한 REST API 엔드포인트" 항목을 참조하세요.

참고: 한 번에 세 개 이상의 태그를 푸시할 때 이벤트가 생성되지 않습니다.

커밋 또는 태그를 푸시하거나 템플릿에서 리포지토리를 만들 때 워크플로우를 실행합니다.

예를 들어 push 이벤트가 발생할 때 워크플로를 실행할 수 있습니다.

on:
  push

참고: push webhook 이벤트가 워크플로 실행을 트리거할 때 작업 UI의 “푸시한 사람” 필드에는 작성자나 커밋한 사람이 아닌 푸셔의 계정이 표시됩니다. 그러나 배포 키와 함께 SSH 인증을 사용하여 변경 내용이 리포지토리로 푸시되는 경우 “푸시한 사람” 필드는 배포 키를 리포지토리에 추가할 때 확인한 리포지토리 관리자가 됩니다.

특정 분기에 푸시가 발생하는 경우에만 워크플로 실행

branches 또는 branches-ignore 필터를 사용하여 특정 분기가 푸시될 때만 실행되도록 워크플로를 구성할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을(를) 참조하세요.

예를 들어 이 워크플로는 다른 사용자가 main 분기로 푸시하거나 releases/로 시작하는 분기로 푸시할 때 실행됩니다.

on:
  push:
    branches:
      - 'main'
      - 'releases/**'

참고: branches 필터와 paths 필터를 둘 다 사용하는 경우 두 필터가 모두 충족될 때만 워크플로가 실행됩니다. 예를 들어 다음 워크플로는 이름이 .js로 시작하는 분기에 JavaScript(releases/) 파일 변경을 포함하는 끌어오기 푸시를 만드는 경우에만 실행됩니다.

on:
  push:
    branches:
      - 'releases/**'
    paths:
      - '**.js'

특정 태그의 푸시가 발생하는 경우에만 워크플로 실행

tags 또는 tags-ignore 필터를 사용하여 특정 태그가 푸시될 때만 실행되도록 워크플로를 구성할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을(를) 참조하세요.

예를 들어 이 워크플로는 v1.으로 시작하는 태그를 푸시할 때 실행됩니다.

on:
  push:
    tags:
      - v1.**

푸시가 특정 파일에 영향을 미치는 경우에만 워크플로 실행

paths 또는 paths-ignore 필터를 사용하여 특정 파일에 푸시가 발생할 때 실행되도록 워크플로를 구성할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을(를) 참조하세요.

예를 들어 이 워크플로는 JavaScript 파일(.js)에 변경 내용을 푸시할 때 실행됩니다.

on:
  push:
    paths:
      - '**.js'

참고: branches 필터와 paths 필터를 둘 다 사용하는 경우 두 필터가 모두 충족될 때만 워크플로가 실행됩니다. 예를 들어 다음 워크플로는 이름이 .js로 시작하는 분기에 JavaScript(releases/) 파일 변경을 포함하는 끌어오기 푸시를 만드는 경우에만 실행됩니다.

on:
  push:
    branches:
      - 'releases/**'
    paths:
      - '**.js'

registry_package

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
registry_package- published
- updated
게시된 패키지 커밋게시된 패키지의 분기 또는 태그

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

참고: 다중 아키텍처 컨테이너 이미지를 푸시할 때 이 이벤트는 매니페스트당 한 번 발생하므로 워크플로가 여러 번 트리거되는 것을 볼 수 있습니다. 이 문제를 완화하고 실제 이미지 태그 정보가 포함된 이벤트에 대해서만 워크플로 작업을 실행하려면 조건부를 사용하세요:

jobs:
    job_name:
        if: ${{ github.event.registry_package.package_version.container_metadata.tag.name != '' }}

리포지토리에서 GitHub Packages에 관련된 작업이 발생하면 워크플로를 실행합니다. 자세한 내용은 “GitHub Packages 설명서”를 참조하세요.

예를 들어 새 패키지 버전이 published인 경우 워크플로를 실행할 수 있습니다.

on:
  registry_package:
    types: [published]

release

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
release- published
- unpublished
- created
- edited
- deleted
- prereleased
- released
태그가 지정된 릴리스의 마지막 커밋릴리스의 태그 참조 refs/tags/<tag_name>

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하세요. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 워크플로는 초안 릴리스의 created, edited 또는 deleted 작업 유형에 대해 트리거되지 않습니다. GitHub Enterprise Cloud 브라우저 UI를 통해 릴리스를 만들면 릴리스가 자동으로 초안으로 저장될 수 있습니다.

참고: prereleased 유형은 초안 릴리스에서 게시된 시험판에 대해 트리거되지 않지만 published 유형이 트리거됩니다. 안정적인 사전 릴리스가 게시될 때 워크플로를 실행하려면 releasedprereleased 대신 published를 구독합니다.__

리포지토리에서 릴리스 작업이 발생하면 워크플로를 실행합니다. 릴리스 API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 REST API 설명서의 "릴리스 및 릴리스 자산에 대한 REST API 엔드포인트"을 참조하세요.

예를 들어 릴리스가 published된 경우 워크플로를 실행할 수 있습니다.

on:
  release:
    types: [published]

repository_dispatch

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
repository_dispatch사용자 지정기본 분기의 마지막 커밋기본 분기

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

GitHub Enterprise Cloud 외부에서 발생하는 작업에 대한 워크플로를 트리거하려는 경우 GitHub Enterprise Cloud API를 사용하여 repository_dispatch라고 불리는 웹후크 이벤트를 트리거할 수 있습니다. 자세한 내용은 "리포지토리에 대한 REST API 엔드포인트"을(를) 참조하세요.

repository_dispatch 이벤트 만들기를 요청할 때 작업 유형을 설명하는 event_type을 지정해야 합니다. 기본적으로 모든 repository_dispatch 작업 유형은 워크플로를 실행하도록 트리거합니다. types 키워드를 사용하여 event_type 웹후크 페이로드에서 특정 repository_dispatch 값을 보낼 때 워크플로를 실행하도록 제한할 수 있습니다.

on:
  repository_dispatch:
    types: [test_result]

참고: event_type 값의 최대 길이는 100자입니다.

client_payload 매개 변수를 통해 보내는 모든 데이터는 워크플로의 github.event 컨텍스트에서 사용할 수 있습니다. 예를 들어 리포지토리 디스패치 이벤트를 만들 때 다음과 같은 요청 본문을 보내는 경우

{
  "event_type": "test_result",
  "client_payload": {
    "passed": false,
    "message": "Error: timeout"
  }
}

다음과 같은 워크플로의 페이로드에 액세스할 수 있습니다.

on:
  repository_dispatch:
    types: [test_result]

jobs:
  run_if_failure:
    if: ${{ !github.event.client_payload.passed }}
    runs-on: ubuntu-latest
    steps:
      - env:
          MESSAGE: ${{ github.event.client_payload.message }}
        run: echo $MESSAGE

참고:

  • 최상위 속성의 최대 개수 client_payload 는 10개입니다.
  • 페이로드에는 최대 65,535자를 포함할 수 있습니다.

schedule

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
해당 없음해당 없음기본 분기의 마지막 커밋기본 분기

참고:

  • GitHub Actions 워크플로가 실행되는 로드가 많은 기간 동안 schedule 이벤트가 지연될 수 있습니다. 높은 로드 시간에는 매 시간의 시작이 포함됩니다. 부하가 높으면 대기 중인 작업 일부가 삭제될 수 있습니다. 지연 가능성을 줄이려면 워크플로가 다른 시간에 실행되도록 예약합니다.
  • 퍼블릭 리포지토리에서 예약된 워크플로는 60일 동안 리포지토리 작업이 발생하지 않은 경우 자동으로 사용할 수 없게 됩니다. 사용 중지된 워크플로를 다시 사용하는 방법에 대한 자세한 내용은 "워크플로를 사용/사용하지 않도록 설정" 항목을 참조하세요.
  • 예약된 워크플로로 커밋한 마지막 사용자가 조직에서 제거되면 예약된 워크플로가 사용 중지됩니다. 리포지토리에 대한 write 권한이 있는 사용자가 예약된 워크플로 파일로 커밋하면 예약된 워크플로가 다시 사용됩니다.

schedule 이벤트를 사용하면 예약된 시간에 워크플로를 트리거할 수 있습니다.

POSIX cron 구문을 사용하여 특정 UTC 시간에 워크플로를 실행하도록 예약할 수 있습니다. 예약된 워크플로는 기본 분기 또는 베이스 분기의 최신 커밋에서 실행됩니다. 예약된 워크플로를 실행할 수 있는 가장 짧은 간격은 5분마다 한 번입니다.

이 예제에서는 매일 5:30 및 17:30 UTC에 워크플로를 트리거합니다.

on:
  schedule:
    # * is a special character in YAML so you have to quote this string
    - cron:  '30 5,17 * * *'

단일 워크플로는 여러 schedule 이벤트에 의해 트리거될 수 있습니다. github.event.schedule 컨텍스트를 통해 워크플로를 트리거한 일정 이벤트에 액세스할 수 있습니다. 이 예제에서는 매주 월~목요일 5:30 UTC에 실행되도록 워크플로를 트리거하지만 월요일과 수요일에는 Not on Monday or Wednesday 단계를 건너뜁니다.

on:
  schedule:
    - cron: '30 5 * * 1,3'
    - cron: '30 5 * * 2,4'

jobs:
  test_schedule:
    runs-on: ubuntu-latest
    steps:
      - name: Not on Monday or Wednesday
        if: github.event.schedule != '30 5 * * 1,3'
        run: echo "This step will be skipped on Monday and Wednesday"
      - name: Every time
        run: echo "This step will always run"

Cron 구문에는 공백으로 구분된 5개의 필드가 있으며 각 필드는 시간 단위를 나타냅니다.

┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of the month (1 - 31)
│ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
│ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
* * * * *

5개 필드 모두에서 다음과 같은 연산자를 사용할 수 있습니다.

Operator설명예시
*모든 값15 * * * *의 경우 매일 매시 15분마다 실행됩니다.
,값 목록 구분 기호2,10 4,5 * * *의 경우 매일 4번째 및 5번째 시간의 2분과 10분에 실행됩니다.
-값 범위30 4-6 * * *의 경우 4번째, 5번째 및 6번째 시간의 30분에 실행됩니다.
/단계 값20/15 * * * *의 경우 20~59분 중 15분마다(20, 35 및 50분) 실행됩니다.

참고: GitHub Actions는 비표준 구문 @yearly, @monthly, @weekly, @daily, @hourly@reboot를 지원하지 않습니다.

crontab guru를 사용하여 cron 구문을 생성하고 실행 시간을 확인할 수 있습니다. 시작하는 데 도움이 되는 crontab guru 예제 목록도 있습니다.

예약된 워크플로에 대한 알림은 워크플로 파일에서 cron 구문을 마지막으로 수정한 사용자에게 전송됩니다. 자세한 내용은 "워크플로 실행에 대한 알림"을(를) 참조하세요.

status

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
status해당 없음기본 분기의 마지막 커밋해당 없음

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

Git 커밋의 상태가 변경되면 워크플로를 실행합니다. 예를 들어 커밋을 error, failure, pending 또는 success로 표시할 수 있습니다. 상태 변경에 대한 자세한 정보를 제공하려는 경우 check_run 이벤트를 사용할 수 있습니다. 커밋 상태 API에 대한 자세한 내용은 GraphQL API 설명서의 "개체" 또는 "커밋에 대한 REST API 엔드포인트" 항목을 참조하세요.

예를 들어 status 이벤트가 발생할 때 워크플로를 실행할 수 있습니다.

on:
  status

새 커밋 상태에 따라 워크플로에서 작업을 실행하려는 경우 github.event.state 컨텍스트를 사용할 수 있습니다. 예를 들어 다음 워크플로는 커밋 상태가 변경되면 트리거되지만 새 커밋 상태가 error 또는 failure인 경우에만 if_error_or_failure 작업이 실행됩니다.

on:
  status
jobs:
  if_error_or_failure:
    runs-on: ubuntu-latest
    if: >-
      github.event.state == 'error' ||
      github.event.state == 'failure'
    steps:
      - env:
          DESCRIPTION: ${{ github.event.description }}
        run: |
          echo The status is error or failed: $DESCRIPTION

watch

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
watch- started기본 분기의 마지막 커밋기본 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. started 작업 유형만 지원되지만 작업 유형을 지정하면 나중에 더 많은 작업 형식이 추가될 경우 워크플로가 특정 상태로 유지됩니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하십시오. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

워크플로의 리포지토리가 별표로 표시되면 워크플로를 실행합니다. 끌어오기 요청 API에 대한 자세한 내용은 GraphQL API 설명서의 "변형" 또는 "별표 표시에 대한 REST API 엔드포인트" 항목을 참조하세요.

예를 들어 누군가가 조사식 이벤트의 started 작업 유형인 리포지토리에 별을 표시할 때 워크플로를 실행할 수 있습니다.

on:
  watch:
    types: [started]

workflow_call

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
호출자 워크플로와 동일해당 없음호출자 워크플로와 동일호출자 워크플로와 동일

workflow_call은 다른 워크플로에서 워크플로를 호출할 수 있음을 나타내는 데 사용됩니다. 워크플로가 workflow_call 이벤트로 트리거되면 호출된 워크플로의 이벤트 페이로드는 호출 워크플로의 이벤트 페이로드와 동일합니다. 자세한 내용은 "워크플로 다시 사용"을 참조하세요.

아래 예제에서는 워크플로가 다른 워크플로에서 호출된 경우에만 실행됩니다.

on: workflow_call

workflow_dispatch

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
workflow_dispatch해당 없음GITHUB_REF 브랜치 또는 태그의 마지막 커밋디스패치를 받은 브랜치 또는 태그

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

워크플로우가 수동으로 트리거되도록 하려면 workflow_dispatch 이벤트를 구성해야 합니다. GitHub Enterprise Cloud API, GitHub CLI 또는 GitHub Enterprise Cloud 브라우저 인터페이스를 사용하여 워크플로 실행을 수동으로 트리거할 수 있습니다. 자세한 내용은 "워크플로 수동 실행"을(를) 참조하세요.

on: workflow_dispatch

입력 제공

워크플로에서 직접 이벤트에 대한 사용자 지정 정의 입력 속성, 기본 입력 값 및 필수 입력을 구성할 수 있습니다. 이벤트를 트리거할 때 ref 및 모든 inputs를 제공할 수 있습니다. 워크플로가 실행되면 inputs 컨텍스트의 입력 값에 액세스할 수 있습니다. 자세한 내용은 "컨텍스트"을(를) 참조하세요.

참고:

  • 워크플로는 컨텍스트에서 입력도 받습니다 github.event.inputs . inputs 컨텍스트와 github.event.inputs 컨텍스트의 정보는 inputs 컨텍스트가 부울 값을 문자열로 변환하는 대신 부울 값으로 유지한다는 점을 제외하고 동일합니다. 이 형식은 choice 문자열로 확인되며 단일 선택 가능한 옵션입니다.
  • 최상위 속성 inputs 의 최대 수는 10개입니다.
  • 최대 페이로드는 inputs 65,535자입니다.

이 예에서는 logLevel, tags, 및 environment이라는 입력을 정의합니다. 워크플로를 실행할 때 입력에 대한 값을 워크플로에 전달합니다. 그런 다음, 이 워크플로는 inputs.logLevel, inputs.tags, and inputs.environment 컨텍스트 속성을 사용하여 값을 로그에 출력합니다.

on:
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'
        required: true
        default: 'warning'
        type: choice
        options:
        - info
        - warning
        - debug
      tags:
        description: 'Test scenario tags'
        required: false
        type: boolean
      environment:
        description: 'Environment to run tests against'
        type: environment
        required: true

jobs:
  log-the-inputs:
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo "Log level: $LEVEL"
          echo "Tags: $TAGS"
          echo "Environment: $ENVIRONMENT"
        env:
          LEVEL: ${{ inputs.logLevel }}
          TAGS: ${{ inputs.tags }}
          ENVIRONMENT: ${{ inputs.environment }}

브라우저에서 이 워크플로를 실행하는 경우 워크플로가 실행되기 전에 필수 입력에 대한 값을 수동으로 입력해야 합니다.

워크플로우 실행 목록의 스크린샷. "워크플로우 실행"이라는 레이블이 붙어 있고 입력 필드를 표시하도록 확장된 드롭다운 메뉴는 진한 주황색으로 윤곽이 그려져 있습니다.

스크립트에서 워크플로를 실행하거나 GitHub CLI를 사용하여 입력을 전달할 수도 있습니다. 예시:

gh workflow run run-tests.yml -f logLevel=warning -f tags=false -f environment=staging

자세한 내용은 "워크플로 수동 실행"의 GitHub CLI 정보를 참조하세요.

workflow_run

웹후크 이벤트 페이로드활동 유형GITHUB_SHAGITHUB_REF
workflow_run- completed
- requested
- in_progress
기본 분기의 마지막 커밋기본 분기

참고: 둘 이상의 활동 유형이 이 이벤트를 트리거합니다. 워크플로를 다시 실행할 때 requested 작업 유형이 발생하지 않습니다. 각 활동 유형에 대한 자세한 내용은 "웹후크 이벤트 및 페이로드"을 참조하십시오. 기본적으로 모든 활동 유형은 이 이벤트에서 실행되는 워크플로를 트리거합니다. types 키워드를 사용하여 워크플로 실행을 특정 활동 유형으로 제한할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

참고: 이 이벤트는 워크플로 파일이 기본 분기에 있는 경우에만 워크플로 실행을 트리거합니다.

참고: 세 개 이상의 워크플로 수준을 함께 연결하는 데 workflow_run을 사용할 수 없습니다. 예를 들어 초기 워크플로 A가 실행된 후 순차적으로 실행되도록 (B부터 F까지의) 5개의 워크플로를 트리거하려고 하면(즉, ABCDEF) EF 워크플로가 실행되지 않습니다.

이 이벤트는 워크플로 실행을 요청하거나 완료할 때 발생합니다. 이를 통해 다른 워크플로의 실행 또는 완료에 따라 워크플로를 실행할 수 있습니다. workflow_run 이벤트에 의해 시작된 워크플로는 이전 워크플로는 그렇지 않더라도 비밀에 액세스하고 토큰을 쓸 수 있습니다. 이는 이전 워크플로가 의도적으로 권한이 없지만 이후 워크플로에서 권한 있는 작업을 수행해야 하는 경우에 유용합니다.

이 예제에서는 별도의 “테스트 실행” 워크플로가 완료된 후 실행되도록 워크플로가 구성됩니다.

on:
  workflow_run:
    workflows: [Run Tests]
    types:
      - completed

workflow_run 이벤트에 대해 여러 개의 workflows를 지정하는 경우 워크플로 중 하나만 실행해야 합니다. 예를 들어 다음 트리거가 있는 워크플로는 “스테이징” 워크플로 또는 “랩” 워크플로가 완료될 때마다 실행됩니다.

on:
  workflow_run:
    workflows: [Staging, Lab]
    types:
      - completed

다른 워크플로의 결론에 따라 워크플로 실행

워크플로 실행은 이전 워크플로의 결론에 관계없이 트리거됩니다. 트리거 워크플로의 결과에 따라 작업 또는 단계를 실행하려는 경우 github.event.workflow_run.conclusion 속성과 함께 조건을 사용할 수 있습니다. 예를 들어 이 워크플로는 “빌드”라는 워크플로가 완료될 때마다 실행되지만, “빌드” 워크플로가 성공한 경우에만 on-success 작업이 실행되고 “빌드” 워크플로가 실패한 경우에만 on-failure 작업이 실행됩니다.

on:
  workflow_run:
    workflows: [Build]
    types: [completed]

jobs:
  on-success:
    runs-on: ubuntu-latest
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    steps:
      - run: echo 'The triggering workflow passed'
  on-failure:
    runs-on: ubuntu-latest
    if: ${{ github.event.workflow_run.conclusion == 'failure' }}
    steps:
      - run: echo 'The triggering workflow failed'

분기를 기반으로 실행하도록 워크플로 제한

branches 또는 branches-ignore 필터를 사용하여 워크플로를 트리거하기 위해 트리거 워크플로가 실행되어야 하는 분기를 지정할 수 있습니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을(를) 참조하세요. 예를 들어 다음 트리거가 있는 워크플로는 이름이 canary인 분기에서 Build라는 워크플로가 실행되는 경우에만 실행됩니다.

on:
  workflow_run:
    workflows: [Build]
    types: [requested]
    branches: [canary]

트리거 워크플로의 데이터 사용

워크플로를 트리거한 워크플로에 해당하는 workflow_run이벤트 페이로드에 액세스할 수 있습니다. 예를 들어 트리거 워크플로에서 아티팩트가 생성되면 workflow_run 이벤트로 트리거된 워크플로가 아티팩트에 액세스할 수 있습니다.

다음 워크플로는 데이터를 아티팩트로 업로드합니다. (이 기본 예제에서 데이터는 끌어오기 요청 번호입니다.)

name: Upload data

on:
  pull_request:

jobs:
  upload:
    runs-on: ubuntu-latest

    steps:
      - name: Save PR number
        env:
          PR_NUMBER: ${{ github.event.number }}
        run: |
          mkdir -p ./pr
          echo $PR_NUMBER > ./pr/pr_number
      - uses: actions/upload-artifact@v4
        with:
          name: pr_number
          path: pr/

위의 워크플로 실행이 완료되면 다음 워크플로의 실행을 트리거합니다. 다음 워크플로에서는 github.event.workflow_run 컨텍스트 및 GitHub Enterprise Cloud REST API를 사용하여 위의 워크플로에서 업로드한 아티팩트를 다운로드하고, 다운로드한 아티팩트 압축을 풀고, 숫자가 아티팩트로 업로드된 끌어오기 요청에 대한 주석을 다운로드합니다.

name: Use the data

on:
  workflow_run:
    workflows: [Upload data]
    types:
      - completed

jobs:
  download:
    runs-on: ubuntu-latest
    steps:
      - name: 'Download artifact'
        uses: actions/github-script@v6
        with:
          script: |
            let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
               owner: context.repo.owner,
               repo: context.repo.repo,
               run_id: context.payload.workflow_run.id,
            });
            let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
              return artifact.name == "pr_number"
            })[0];
            let download = await github.rest.actions.downloadArtifact({
               owner: context.repo.owner,
               repo: context.repo.repo,
               artifact_id: matchArtifact.id,
               archive_format: 'zip',
            });
            let fs = require('fs');
            fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/pr_number.zip`, Buffer.from(download.data));

      - name: 'Unzip artifact'
        run: unzip pr_number.zip

      - name: 'Comment on PR'
        uses: actions/github-script@v6
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            let fs = require('fs');
            let issue_number = Number(fs.readFileSync('./pr_number'));
            await github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: issue_number,
              body: 'Thank you for the PR!'
            });