[GitHub Action] workflow_call를 통한 다른 workflow 실행하기
GitHub Actions의 workflow는 소프트웨어 개발 과정에서 자동화된 작업을 정의합니다. 이를 통해 코드 푸시, 풀 요청 또는 다른 GitHub 이벤트에 반응하여 테스트, 빌드, 배포와 같은 CI/CD 작업을 실행할 수 있습니다.
GitHub Actions에는 CI/CD 작업을 위해 다양한 기능이 있으며 이번에 테스트할 기능은 workflow_call 기능입니다. workflow_call 기능은 다른 파일에 정의된 workflow를 실행할 수 있으며, 재사용이 가능합니다.
workflows_call 이벤트
workflow_call 이벤트를 사용하는 GitHub Actions workflow는 다른 workflow에서 재사용 가능한 구성 요소로 기능합니다. 이것은 코드 중복을 줄이고, 워크플로우의 유지 관리를 간소화하며, 프로젝트 전반에서 일관된 CI/CD 작업을 사용하는데 좋습니다.
- 예시 코드
on: workflow_call: inputs: environment: required: true type: string
- on: workflow가 어떤 이벤트에 의해 활성화되는지 정의
- workflow_call: 다른 workflow에 의해 호출될 수 있음을 정의
- inputs: 호출하는 workflow에서 이 workflow로 전달할 수 있는 입력 파라미터 정의
- environment: 입력 파라미터 값(이름)
- required: true: 입력 파라미터 필수 제공 조건
- type: string: 입력 파라미터 형식
workflow_call:
를 통해 외부에서 호출될 수 있음을 정의하고,
inputs:
를 통해 다양한 입력 파라미터를 전달 받을 수 있습니다.
workflows_call 코드
workflows_call 이벤트를 통해 다른 workflows에서 workflows 파일을 실행할 경우 uses
키워드를 사용합니다. 호출하는 workflows를 call workflows라고 명칭하며 호출되는 called workflows라고 명칭하여 사용하는 것 같습니다.
호출되는 called workflow 코드
> ./.github/workflows/workflow_call.yml
name: Workflows Names - called_workflow
run-name: Runs Names - called_workflow 🚀
on:
workflow_call:
inputs:
environment:
required: true
type: string
jobs:
Jobs-Names-called_workflow:
runs-on: ubuntu-latest
steps:
- name: echo enviroment
run: echo Setup for ${{ inputs.environment }}
간단히 workflow 호출 시 입력 파라미터 environment 값을 받고 출력하도록 설정하였습니다.
호출하는 call workflow 코드
> ./.github/workflows/workflow_call_demo.yml
name: Workflows Names - workflow_call_demo
run-name: Runs Names - workflow_call_demo 🚀
on:
push
jobs:
Jobs-Names-workflow_call_demo:
uses: ./.github/workflows/workflow_call.yml
with:
environment: production
uses
키워드를 통해 재사용 workflows 파일의 경로를 지정하고 브랜치명 설정은 옵션이며 필요에 따라 지정합니다.
with 섹션을 통해 필요한 파라미터 inputs 값을 제공합니다.
workflows_call 실행
Push 이벤트 및 수동으로 해당 workflow를 실행해보겠습니다.
설정한 workflow가 실행되었습니다.
workflow_call_demo.yml 파일이 실행되었으며
workflow_call 설정을 통해 environment 파라미터를 전달하여 workflow_call.yml 파일을 실행하였습니다.
전달한 파라미터 값(`production`)을 정상적으로 출력하였습니다.
GitHub의 workflow_call 이벤트를 활용하면 하나의 workflow를 다른 여러 workflow에서 재사용할 수 있어, 공통된 작업이 필요한 다양한 프로젝트나 레포지토리 간에 코드 중복을 줄이고 유지보수를 용이하게 할 수 있습니다. 또한 대규모 소프트웨어 개발 프로젝트에서 특히 유용할 수 있습니다. 공통된 작업을 재사용 코드로 관리하여 사용해보시기 바랍니다.
지금까지 workflow_call를 통한 다른 workflow를 실행 해보는 시간을 가졌습니다....! 끝...!
유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!
[Reference]
https://docs.github.com/en/actions/using-workflows/reusing-workflows
'CI-CD > GitHub Actions' 카테고리의 다른 글
[GitHub Actions] workflows 이름 설정하기 (0) | 2024.03.21 |
---|---|
[GitHub Actions] actions artifact 기능을 통한 데이터 공유 및 저장 (0) | 2024.03.19 |
[GitHub Action] actions/cache 기능을 통한 데이터 캐싱 (0) | 2024.03.15 |
[GitHub Actions] workflows 설정 및 기본 실행 (0) | 2024.02.08 |
[GitHub Actions] 한번 알아보자 (0) | 2024.02.06 |