사용자 지정 GitHub Actions 개발
JavaScript 또는 Docker를 사용해 재사용 가능한 사용자 지정 Actions를 만들고 GitHub Actions의 기능을 확장하는 방법을 배웁니다.
사용자 지정 GitHub Actions 개발은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
GitHub Actions 확장하기
GitHub Actions가 기본적으로 제공하지 않는 특정 작업이 워크플로에 필요하다면 어떻게 해야 할까요? 또는 재사용하려는 복잡한 로직이 있을 수도 있습니다.
사용자 지정 Action을 사용하면 워크플로용 재사용 가능한 도구를 직접 만들 수 있습니다. 필요한 작업에 맞게 만든 특정 작업을 수행하는 작은 프로그램이라고 생각하면 됩니다.
사용자 지정의 힘
사용자 지정 Action은 CI/CD 파이프라인에 다음과 같은 여러 이점을 제공합니다.
- 재사용성: 한 번 작성하고 여러 워크플로와 저장소에서 사용합니다.
- 표준화: 조직 전체에서 일관된 프로세스를 유지합니다.
- 캡슐화: 복잡한 로직을 단순한 인터페이스 뒤에 숨깁니다.
- 통합: 특정 내부 도구 또는 API와 상호 작용합니다.
JavaScript와 Docker 중 무엇을 사용할까요?
GitHub Actions는 사용자 지정 Action을 만드는 두 가지 주요 방법을 지원합니다.
- JavaScript Action: JavaScript(또는 TypeScript)로 작성하며 실행기 시스템에서 직접 실행됩니다. 간단한 작업에 빠르고 편리합니다.
- Docker 컨테이너 Action: Docker 이미지 안에 환경과 코드를 캡슐화합니다. 특정 종속성이나 언어가 필요한 Action에 적합합니다.
Action 정의하기
모든 사용자 지정 Action은 루트 디렉터리에 action.yml 파일이 있어야 합니다. 이 YAML 파일은 매니페스트와 같은 역할을 하며 GitHub Actions에 Action 정보를 알려 줍니다.
name및description: Action이 수행하는 작업입니다.inputs: Action이 받는 데이터입니다.outputs: Action이 생성하는 데이터입니다.runs: Action이 실행되는 방식입니다(예: JavaScript 파일 또는 Docker 이미지).
간단한 JS Action 예제
기본적인 JavaScript Action을 살펴보겠습니다. action.yml 파일과 index.js 파일이 필요합니다. action.yml은 Action의 메타데이터와 실행 환경을 정의합니다.
# action.yml
name: 'Hello World Action'
description: 'Greets a person using a custom message'
inputs:
who-to-greet:
description: 'Who to greet'
required: true
default: 'World'
outputs:
greeting-message:
description: 'The greeting message generated'
runs:
using: 'node16'
main: 'index.js'JavaScript 작성하기
index.js 파일에는 실제 로직이 들어 있습니다. 입력을 가져오고 출력을 설정하기 위해 @actions/core 도구 키트를 사용합니다.
전체 워크플로 밖에서도 입력과 출력이 개념적으로 어떻게 작동하는지 확인할 수 있도록 다음의 간단한 JavaScript 코드 조각을 실행해 보십시오.
// index.js (simplified for demonstration)
const core = require('@actions/core');
try {
const name = core.getInput('who-to-greet');
const message = `Hello, ${name}!`;
console.log(message);
core.setOutput('greeting-message', message);
} catch (error) {
core.setFailed(error.message);
}
// A standalone runnable example to demonstrate core logic
function runSimpleGreeting(inputName) {
const name = inputName || 'World';
const message = `Hello from runnable JS, ${name}!`;
return message;
}
console.log(runSimpleGreeting('CoddyKit'));
console.log(runSimpleGreeting());Docker Action 기초
더 복잡한 환경에서는 Docker 컨테이너 Action이 강력한 선택입니다. 필요한 모든 종속성을 포함하도록 Docker 이미지를 구성하는 Dockerfile이 들어 있습니다.
action.yml은 이 이미지를 참조하며 GitHub Actions에 이미지를 빌드하고 실행하는 방법을 알려 줍니다.
# action.yml for Docker action
name: 'Docker Hello World'
description: 'Greets a name from within a Docker container'
inputs:
who-to-greet:
description: 'Who to greet'
required: true
default: 'Docker'
outputs:
greeting-message:
description: 'The greeting message from Docker'
runs:
using: 'docker'
image: 'Dockerfile'Action의 실행 환경
Dockerfile은 기본 이미지를 지정하고 종속성을 설치하며 Action의 진입점을 정의합니다. 이를 통해 일관되고 제어된 환경에서 Action이 실행됩니다.
# Dockerfile
FROM alpine:3.16
LABEL "com.github.actions.name"="Docker Hello World"
LABEL "com.github.actions.description"="Greets a name from within a Docker container"
LABEL "com.github.actions.icon"="globe"
LABEL "com.github.actions.color"="blue"
# Copy your script into the container
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]Docker Action 스크립트 작성
Docker 컨테이너 안에서 진입점 스크립트(예: entrypoint.sh)는 입력을 환경 변수(INPUT_ 접두사가 붙음)로 받습니다. 환경 변수 $GITHUB_OUTPUT으로 지정된 파일에 기록하여 출력을 설정합니다.
#!/bin/sh -l
# entrypoint.sh
echo "Hello from Docker, $INPUT_WHO_TO_GREET!"
GREETING="Hello from Docker, $INPUT_WHO_TO_GREET!"
echo "greeting-message=$GREETING" >> "$GITHUB_OUTPUT"Action 모범 사례
사용자 지정 Action을 개발할 때 견고하고 유지 관리하기 쉬운 도구를 만들려면 다음 팁을 고려하십시오.
- 버전 관리: 안정성을 위해 의미 체계 버전 관리(예:
v1,v2)를 사용합니다. - 테스트: 로컬 환경과 워크플로에서 Action을 철저히 테스트합니다.
- 오류 처리: 명확한 오류 메시지와 우아한 실패 처리를 구현합니다.
- 보안: 입력을 정제하고 민감한 데이터가 노출되지 않도록 합니다.
- 문서화: README에 명확한 사용 지침을 제공합니다.
Action 유형 확인
표준 GitHub Actions 실행기에 사전 설치되지 않은 특정 Python 라이브러리가 필요한 사용자 지정 GitHub Action을 만들어야 합니다. 이 시나리오에 일반적으로 가장 적합한 Action 유형은 무엇입니까?
사용자 지정 Action 요약
직접 사용자 지정 Action을 만들어 GitHub Actions를 확장하는 방법을 살펴보았습니다. 두 가지 주요 유형인 JavaScript Action과 Docker 컨테이너 Action, 그리고 action.yml 파일의 중요한 역할을 배웠습니다. 또한 각 유형의 입력, 출력 및 핵심 로직을 정의하는 방법과 개발 모범 사례도 다루었습니다.
사용자 지정 Action은 CI/CD 파이프라인에서 재사용성과 표준화를 실현하는 강력한 도구입니다!
자주 묻는 질문
“사용자 지정 GitHub Actions 개발” 강의는 무료인가요?
네 — “사용자 지정 GitHub Actions 개발” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“사용자 지정 GitHub Actions 개발”에서 뭘 배우나요?
JavaScript 또는 Docker를 사용해 재사용 가능한 사용자 지정 Actions를 만들고 GitHub Actions의 기능을 확장하는 방법을 배웁니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“사용자 지정 GitHub Actions 개발” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 사용자 지정 GitHub Actions 개발
- 온프레미스를 위한 자체 호스팅 실행기
- 엔터프라이즈 시스템 통합
- 복합 작업 및 Marketplace 게시