[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

 

 

 

+ Recent posts