개요
워크플로에서 사용하는 작업은 다음 위치에서 정의될 수 있습니다.
- 워크플로 파일과 동일한 리포지토리
- 워크플로에 대한 액세스를 허용하도록 구성된, 동일한 엔터프라이즈 계정의 내부 리포지토리
- 임의 퍼블릭 리포지토리
- Docker Hub에 게시된 Docker 컨테이너 이미지
GitHub Marketplace는 GitHub 커뮤니티에서 만든 작업을 찾을 수 있는 중앙 위치입니다.
동일한 리포지토리에서 작업 추가
워크플로 파일이 작업을 사용하는 곳과 동일한 리포지토리에서 작업이 정의된 경우 워크플로 파일에서 {owner}/{repo}@{ref}
또는 ./path/to/dir
구문을 사용하여 작업을 참조할 수 있습니다.
리포지토리 파일 구조 예제:
|-- hello-world (repository)
| |__ .github
| └── workflows
| └── my-first-workflow.yml
| └── actions
| |__ hello-world-action
| └── action.yml
워크플로 파일 예제:
jobs:
build:
runs-on: ubuntu-latest
steps:
# This step checks out a copy of your repository.
- uses: actions/checkout@v3
# This step references the directory that contains the action.
- uses: ./.github/actions/hello-world-action
action.yml
파일은 작업에 대한 메타데이터를 제공하는 데 사용됩니다. "GitHub Actions에 대한 메타데이터 구문"에서 이 파일의 내용에 대해 알아봅니다.
다른 리포지토리에서 작업 추가
작업이 워크플로 파일과 다른 리포지토리에서 정의된 경우 워크플로 파일에서 {owner}/{repo}@{ref}
구문을 사용하여 작업을 참조할 수 있습니다.
퍼블릭 리포지토리 또는 워크플로에 대한 액세스를 허용하도록 구성된 내부 리포지토리에 작업을 저장해야 합니다. 자세한 내용은 "Finding and customizing actions.
jobs:
my_first_job:
steps:
- name: My first step
uses: actions/setup-node@v3
Docker Hub의 컨테이너 참조
작업이 Docker Hub에 게시된 Docker 컨테이너 이미지에서 정의된 경우 워크플로 파일에서 docker://{image}:{tag}
구문을 사용하여 작업을 참조해야 합니다. 코드와 데이터를 보호하려면 워크플로에서 사용하기 전에 Docker Hub의 Docker 컨테이너 이미지 무결성을 확인하는 것이 좋습니다.
jobs:
my_first_job:
steps:
- name: My first step
uses: docker://alpine:3.8
Docker 작업의 몇 가지 예제는 Docker-image.yml 워크플로 및 "Docker 컨테이너 작업 만들기"을 참조하세요.
사용자 지정 작업의 릴리스 관리 사용
커뮤니티 작업의 작성자는 태그, 분기 또는 SHA 값을 사용하여 작업 릴리스를 관리할 수 있습니다. 종속성과 마찬가지로, 작업 업데이트 자동 수락을 편하게 받아들이는지에 따라 사용할 작업 버전을 지정해야 합니다.
워크플로 파일에서 작업 버전을 지정합니다. 릴리스 관리 방법에 대한 자세한 내용과 사용할 태그, 분기 또는 SHA 값을 보려면 작업 설명서를 확인하세요.
참고: 타사 작업을 사용하는 경우 SHA 값을 사용하는 것이 좋습니다. 자세한 내용은 “GitHub Actions의 보안 강화”를 참조하세요.
태그 사용
태그는 주 버전과 부 버전 간에 전환할 시기를 결정하는 데 유용하지만 더 일시적이며 유지 관리자가 이동하거나 삭제할 수 있습니다. 다음 예제에서는 v1.0.1
로 태그가 지정된 작업을 대상으로 지정하는 방법을 보여 줍니다.
steps:
- uses: actions/javascript-action@v1.0.1
SHA 사용
더 안정적인 버전 관리가 필요한 경우 작업 버전과 연결된 SHA 값을 사용해야 합니다. SHA는 변경할 수 없으므로 태그 또는 분기보다 더 안정적입니다. 그러나 이 방법은 중요한 버그 수정 및 보안 업데이트를 포함하여 작업에 대한 업데이트를 자동으로 수신하지 않음을 의미합니다. 약식 값이 아닌 커밋의 전체 SHA 값을 사용해야 합니다. SHA를 선택할 때는 해당 SHA가 리포지토리 포크가 아니라 작업의 리포지토리에서 온 것인지 확인해야 합니다. 이 예제에서는 작업의 SHA를 대상으로 합니다.
steps:
- uses: actions/javascript-action@a824008085750b8e136effc585c3cd6082bd575f
분기 사용
작업의 대상 분기를 지정하면 항상 해당 분기의 현재 버전이 실행됩니다. 분기 업데이트에 호환성이 손상되는 변경이 포함된 경우 이 방법은 문제를 일으킬 수 있습니다. 다음 예제에서는 @main
분기를 대상으로 지정합니다.
steps:
- uses: actions/javascript-action@main
자세한 내용은 "사용자 지정 작업 정보"을 참조하세요.
작업에서 입력 및 출력 사용
작업이 입력을 수락하거나 요구하고 사용할 수 있는 출력을 생성하는 경우가 많습니다. 예를 들어 작업에서 파일 경로, 레이블 이름 또는 작업 처리의 일부로 사용할 기타 데이터를 지정하도록 요구할 수 있습니다.
작업의 입력과 출력을 보려면 리포지토리의 루트 디렉터리에 있는 action.yml
또는 action.yaml
을 확인합니다.
이 예제 action.yml
에서 inputs
키워드는 file-path
라는 필수 입력을 정의하고, 지정되지 않은 경우에 사용되는 기본값을 포함합니다. outputs
키워드는 결과를 찾을 위치를 알려주는 results-file
출력을 정의합니다.
name: "Example"
description: "Receives file and generates output"
inputs:
file-path: # id of input
description: "Path to test script"
required: true
default: "test-file.js"
outputs:
results-file: # id of output
description: "Path to results file"
GitHub AE에서 포함된 작업 사용
기본적으로 GitHub AE에서는 GitHub에서 작성된 공식 작업을 대부분 사용할 수 있습니다. 자세한 내용은 "GitHub AE에서 작업 사용"을 참조하세요.
다음 단계
GitHub Actions에 대해 계속 알아보려면 "GitHub Actions의 필수 기능.