재사용 가능한 워크플로 및 Actions
재사용 가능한 워크플로와 사용자 지정 Actions를 만들고 활용해 파이프라인을 모듈화하고 저장소 간 일관성을 높입니다.
재사용 가능한 워크플로 및 Actions은(는) CoddyKit의 무료 CI/CD with GitHub Actions & DevOps Pipelines 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 CI/CD with GitHub Actions & DevOps Pipelines 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. CI/CD with GitHub Actions & DevOps Pipelines 강의에는 총 4개의 강의가 포함되어 있습니다.
워크플로 재사용성 소개
현대 소프트웨어 개발에서는 효율성과 일관성이 중요합니다. 프로젝트가 성장할수록 자동화 요구 사항도 늘어납니다.
GitHub 액션의 재사용 가능한 워크플로와 사용자 지정 액션을 사용하면 반복 작업을 피할 수 있어 CI/CD 파이프라인을 더 쉽게 유지 관리하고 견고하게 만들 수 있습니다.
워크플로를 재사용하는 이유
모두 동일한 빌드, 테스트 또는 배포 단계가 필요한 여러 애플리케이션이 있다고 생각해 보십시오. 워크플로 코드를 복사하여 붙여넣으면 다음과 같은 문제가 발생합니다.
- 중복: 유지 관리해야 할 코드가 늘어납니다.
- 불일치: 여러 워크플로에 변경 사항을 적용하는 일을 놓치기 쉽습니다.
- 유지 관리의 어려움: 변경할 때 여러 파일을 업데이트해야 합니다.
재사용성으로 이러한 문제를 해결할 수 있습니다!
재사용 가능한 워크플로 정의
재사용 가능한 워크플로는 다른 워크플로에서 호출할 수 있는 완전한 워크플로입니다. 저장소에 저장되어 템플릿처럼 작동합니다.
워크플로를 재사용할 수 있게 만들려면 workflow_call 이벤트를 사용합니다. 이렇게 하면 GitHub 액션에 이 워크플로가 push나 pull_request 같은 일반적인 이벤트로 트리거되는 것이 아니라 호출되도록 지정할 수 있습니다.
재사용 가능한 워크플로 예시
다음은 빌드를 시뮬레이션하는 간단한 재사용 가능한 워크플로입니다. .github/workflows/reusable-build.yml에 저장하십시오.
호출하는 워크플로에서 사용할 수 있는 output인 build_id를 정의합니다.
name: Reusable Build Component
on:
workflow_call:
outputs:
build_id:
description: "The ID of the build operation"
value: ${{ jobs.build.outputs.build_id }}
jobs:
build:
runs-on: ubuntu-latest
outputs:
build_id: ${{ steps.generate_id.outputs.id }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Generate build ID
id: generate_id
run: echo "id=$(date +%s)" >> "$GITHUB_OUTPUT"
- name: Simulate build
run: echo "Building project with ID ${{ steps.generate_id.outputs.id }}..."
재사용 가능한 워크플로 호출
재사용 가능한 워크플로를 사용하려면 다른 워크플로(‘호출자’)에서 GitHub 액션을 사용하는 방법과 유사하게 uses 키워드를 사용합니다.
저장소 안에 있는 재사용 가능한 워크플로 파일의 경로를 지정하거나, 다른 저장소 또는 특정 버전의 경로를 지정할 수도 있습니다.
호출자 워크플로 예시
.github/workflows/main-app-ci.yml로 저장된 이 워크플로는 reusable-build.yml 워크플로를 호출합니다.
호출된 워크플로의 build_id 출력에 jobs.call-build.outputs.build_id를 사용하여 접근하는 방식에 주목하십시오.
name: Main App CI
on: [push]
jobs:
call-build:
uses: ./.github/workflows/reusable-build.yml
outputs:
build_id: ${{ jobs.call-build.outputs.build_id }}
deploy:
needs: call-build
runs-on: ubuntu-latest
steps:
- name: Deploy app
run: echo "Deploying app built with ID ${{ needs.call-build.outputs.build_id }}"
재사용 가능한 워크플로에 입력값 전달하기
재사용 가능한 워크플로는 단순한 정적 템플릿이 아닙니다. 입력값을 받을 수 있으므로 매우 유연합니다.
재사용 가능한 워크플로의 on: workflow_call: inputs: 섹션에서 예상되는 입력값을 정의하고, 유형과 필수 여부 및 설명을 지정합니다. 호출하는 워크플로는 with: 키워드를 사용하여 이러한 입력값을 전달합니다.
입력값을 사용하는 재사용 가능한 워크플로
target_env 입력값을 받도록 업데이트된 reusable-build.yml입니다. 이를 통해 동일한 빌드 로직을 여러 환경에 맞게 사용자 지정할 수 있습니다.
name: Reusable Build Component with Input
on:
workflow_call:
inputs:
target_env:
required: true
type: string
description: "The target environment for the build"
outputs:
build_id:
description: "The ID of the build operation"
value: ${{ jobs.build.outputs.build_id }}
jobs:
build:
runs-on: ubuntu-latest
outputs:
build_id: ${{ steps.generate_id.outputs.id }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Generate build ID
id: generate_id
run: echo "id=$(date +%s)" >> "$GITHUB_OUTPUT"
- name: Simulate build for ${{ inputs.target_env }}
run: echo "Building project for ${{ inputs.target_env }} with ID ${{ steps.generate_id.outputs.id }}..."
입력값을 사용한 호출 예시
이제 기본 CI 워크플로는 재사용 가능한 빌드 구성 요소를 두 번 호출할 수 있습니다. 한 번은 '스테이징'에, 한 번은 '프로덕션'에 사용하며 서로 다른 target_env 값을 전달합니다.
name: Main App CI with Input
on: [push]
jobs:
call-build-staging:
uses: ./.github/workflows/reusable-build-with-input.yml
with:
target_env: 'staging'
outputs:
build_id: ${{ jobs.call-build-staging.outputs.build_id }}
call-build-prod:
uses: ./.github/workflows/reusable-build-with-input.yml
with:
target_env: 'production'
outputs:
build_id: ${{ jobs.call-build-prod.outputs.build_id }}
재사용 가능한 워크플로와 사용자 지정 액션 비교
둘 다 재사용성을 높이지만 목적은 다릅니다.
- 재사용 가능한 워크플로: 일련의 작업을 조정합니다. 완전한 워크플로 구조(예: 빌드, 테스트, 배포)를 정의합니다.
- 사용자 지정 액션: 작업 내에서 특정 단일 작업을 수행합니다(예: Node.js 설정, 패키지 게시). 작업 단계 내부에서 사용되는 구성 요소입니다.
워크플로를 레시피로, 액션을 개별 재료나 단계로 생각해 보세요.
빠른 확인
다음 중 GitHub 액션에서 재사용 가능한 워크플로를 사용할 때 얻을 수 있는 주요 이점은 무엇인가요?
복습: 재사용 가능한 워크플로 및 액션
재사용 가능한 워크플로가 CI/CD 파이프라인을 모듈화하는 데 어떻게 도움이 되는지 살펴보았습니다.
workflow_call을 사용하여 정의합니다.inputs를 받고outputs를 제공할 수 있습니다.- 호출하는 워크플로는
uses키워드를 사용합니다. - 작업 내에서 단일 작업을 수행하는 구성 요소인 사용자 지정 액션과는 다릅니다.
재사용성을 도입하면 프로젝트 전반에서 더 효율적이고 일관되며 유지 관리하기 쉬운 자동화를 구축할 수 있습니다.
자주 묻는 질문
“재사용 가능한 워크플로 및 Actions” 강의는 무료인가요?
네 — “재사용 가능한 워크플로 및 Actions” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 CI/CD with GitHub Actions & DevOps Pipelines 강의 전체를 잠금 해제할 수 있습니다. CI/CD with GitHub Actions & DevOps Pipelines 강의에는 총 4개의 강의가 포함되어 있습니다.
“재사용 가능한 워크플로 및 Actions”에서 뭘 배우나요?
재사용 가능한 워크플로와 사용자 지정 Actions를 만들고 활용해 파이프라인을 모듈화하고 저장소 간 일관성을 높입니다. 브라우저에서 직접 실행하는 실습 코드로 CI/CD with GitHub Actions & DevOps Pipelines을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
CI/CD with GitHub Actions & DevOps Pipelines을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 CI/CD with GitHub Actions & DevOps Pipelines은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“재사용 가능한 워크플로 및 Actions” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 CI/CD with GitHub Actions & DevOps Pipelines 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 CI/CD with GitHub Actions & DevOps Pipelines 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 여러 환경을 위한 매트릭스 빌드
- 속도 향상을 위한 종속 항목 캐싱
- 재사용 가능한 워크플로 및 Actions
- 조건부 실행 및 작업 의존성