사용자 지정 액션(Custom actions) 살펴보기
사용자 지정 액션(Custom actions) 살펴보기
액션은 작업(job)을 만들고 워크플로를 커스터마이즈하기 위해 결합할 수 있는 개별 작업이에요. 직접 액션을 만들 수도 있고, GitHub 커뮤니티가 공유하는 액션을 사용·커스터마이즈할 수도 있어요.
본문
사용자 지정 액션 소개
리포지토리와 어떤 방식으로든 상호작용하는 사용자 지정 코드를 작성해 액션을 만들 수 있어요. GitHub의 API와 공개적으로 제공되는 서드 파티 API 통합도 포함돼요. 예를 들어 액션으로 npm 모듈을 게시하거나, 긴급 이슈가 생성될 때 SMS 알림을 보내거나, 프로덕션 준비 코드를 배포할 수 있어요.
워크플로에서 사용할 액션을 직접 작성하거나, 만든 액션을 GitHub 커뮤니티와 공유할 수 있어요. 만든 액션을 모두와 공유하려면 리포지토리가 공개여야 해요.
액션은 머신에서 직접 실행되거나 Docker 컨테이너에서 실행될 수 있어요. 액션의 입력(inputs), 출력(outputs), 환경 변수를 정의할 수 있어요.
액션 유형
[!NOTE] Docker 컨테이너, JavaScript, 복합(composite) 액션을 만들 수 있어요. 액션은 입력, 출력, runs 구성을 정의하는 메타데이터 파일이 필요해요. 액션 메타데이터 파일은 YAML 문법을 사용하며 메타데이터 파일 이름은
action.yml또는action.yaml이어야 해요. 선호되는 형식은action.yml이에요.
| 유형 | Linux | macOS | Windows |
|---|---|---|---|
| Docker container | |||
| JavaScript | |||
| Composite Actions |
Docker 컨테이너 액션
Docker 컨테이너는 GitHub Actions 코드와 함께 환경을 패키징해요. 액션의 사용자가 도구나 의존성에 신경 쓸 필요가 없으므로 더 일관되고 신뢰할 수 있는 작업 단위를 만들어 줘요.
Docker 컨테이너를 사용하면 특정 버전의 운영 체제, 의존성, 도구, 코드를 사용할 수 있어요. 특정 환경 구성에서 실행해야 하는 액션의 경우 운영 체제와 도구를 커스터마이즈할 수 있으므로 Docker가 이상적인 선택이에요. 컨테이너를 빌드·검색하는 지연 시간 때문에 Docker 컨테이너 액션은 JavaScript 액션보다 느려요.
Docker 컨테이너 액션은 Linux 운영 체제를 사용하는 러너에서만 실행할 수 있어요. 자체 호스팅 러너는 Docker 컨테이너 액션을 실행하려면 Linux 운영 체제를 사용하고 Docker가 설치되어 있어야 해요. 자체 호스팅 러너 요구사항에 대한 자세한 내용은 자체 호스팅 러너 참조를 참고하세요.
JavaScript 액션
JavaScript 액션은 러너 머신에서 직접 실행될 수 있으며, 액션 코드와 코드를 실행하는 환경을 분리해요. JavaScript 액션을 사용하면 액션 코드가 단순해지고 Docker 컨테이너 액션보다 더 빨리 실행돼요.
JavaScript 액션이 모든 GitHub 호스팅 러너(Ubuntu, Windows, macOS)와 호환되도록 하려면 작성하는 패키징된 JavaScript 코드가 순수 JavaScript여야 하고 다른 바이너리에 의존하지 않아야 해요. JavaScript 액션은 러너에서 직접 실행되며 러너 이미지에 이미 존재하는 바이너리를 사용해요.
Node.js 프로젝트를 개발 중이라면 GitHub Actions Toolkit에서 개발 속도를 높이는 데 사용할 수 있는 패키지를 제공해요. 자세한 내용은 actions/toolkit 리포지토리를 참고하세요.
복합 액션(Composite Actions)
복합(composite) 액션은 여러 워크플로 단계를 하나의 액션 안에 결합할 수 있게 해줘요. 예를 들어 이 기능을 사용해 여러 run 명령을 한 액션에 묶은 다음, 그 액션을 사용해 묶인 명령을 단일 단계로 실행하는 워크플로를 만들 수 있어요. 예시를 보려면 복합 액션 만들기를 확인하세요.
다음 단계
자체 사용자 지정 액션을 관리하는 방법을 알아보려면 사용자 지정 액션 관리하기를 참고하세요.