CI-CD/GitHub Actions

[GitHub Actions] workflows 설정 및 기본 실행

날래용 2024. 2. 8. 08:00

[GitHub Actions] workflows 설정 및 기본 실행

GitHub Actions은 GitHub에서 호스팅되는 CI/CD 서비스로, 코드 이벤트에 반응하여 자동화된 워크플로우를 실행하여 빌드, 테스트, 배포 등의 작업을 자동으로 수행합니다. YAML 파일을 사용하여 간편하게 워크플로우를 정의하고 구성할 수 있습니다. YAML 파일을 통해 GitHub Actions의 workflows를 설정하여 push 이벤트 발생 시 자동으로 설정한 Pipeline이 동작되도록 기본적인 구성을 해보겠습니다.

 

 


workflows 기본 구조

workflows에 기본적인 구조를 알아봅시다.

 

GitHub Workflows 파일은 .github/workflows 디렉토리에 저장되며 YAML 형식을 사용하여 작성됩니다.
여기에는 기본적인 GitHub Workflows 파일의 구조가 있습니다.

### .github/workflows/github-actions-demo-01.yml

name: Workflow 이름
run-name: Workflow 실행 이름
on:
  event:
    - trigger 이벤트 (예: push, pull_request, release 등)

jobs:
  job_이름:
    runs-on: runner 환경 (예: ubuntu-latest, windows-latest, macos-latest 등)

    steps:
      - name: 단계 1
        uses: 사용할 액션 또는 스크립트
        with:
          key1: value1
          key2: value2

      - name: 단계 2
        run: 실행할 명령어 또는 스크립트
  • name: 워크플로우 이름
  • run-name: 워크플로우 실행 이름
  • on: 어떤 이벤트에서 워크플로우가 실행될지 정의 / 예를 들어 push, pull_request, release 등이 있음
  • jobs: 여러 단계로 구성된 작업들의 그룹
    • jobs_name: 작업 이름
    • runs-on: 작업이 실행될 환경
    • steps: 작업을 수행하는 단계
      • name: 단계 이름
      • uses: 사용할 액션 또는 스크립트 지정
      • with: 액션에 전달할 매개변수
      • run: 실행할 명령어나 스크립트 직접 지정

 

이 외에 다양한 기능과 옵션을 제공하므로, 필요에 따라 추가하여 사용합니다.

 

 


workflows(yml) 설정 및 실행

Push 이벤트가 발생하면 간단히 echo 명령어로 실행하도록 설정을 추가해보겠습니다.

### .github/workflows/github-actions-demo-01.yml

name: Test GitHub Action Demo-01
run-name: Run GitHub Actions-01 🚀
on: [push]

jobs:
  Test-GitHub-Action:
    runs-on: ubuntu-latest
    steps:
      - name: echo-01
        run: |
          echo "TEST ECHO-01"

위와 같이 YAML 파일 생성 후 GitHub 프로젝트에 Push 해보도록 하겠습니다.

 

 

YAML에서 설정한 "Test GitHub Action Demo-01" 이름으로 workflows가 생성되었으며, 실행 이름은 "Run GitHub Actions-01" 으로 생성되었습니다.

 

 

이제 workflows "Run GitHub Actions-01"을 선택해보겠습니다.

YAML에서 설정한 "Test-GitHub-Action" 이름의 작업이 생성되어 있음을 확인하실 수 있습니다.

또한 상세한 Pipeline을 확인해보실 수 있으며, 성공 여부, 동작 시간 등을 확인하실 수 있습니다.

 

 

이제 작업 "Test-GitHub-Action"을 선택해보겠습니다.

설정한 run 필드의 echo "TEST ECHO-01" 명령어가 입력되고 정상적으로 실행됨을 확인하실 수 있습니다.

 

 

정상적으로 실행이 완료되면 Action 설정에서 녹색 표시를 확인하실 수 있습니다.

 

 


2개의 workflows(yml) 설정 및 실행

2개의 workflows(yml)를 생성한다면 어떻게 동작되는지 테스트해보겠습니다.

 

이전에 테스트한 내용과 비슷한 내용으로 YML 파일을 생성해보겠습니다.

### .github/workflows/github-actions-demo-02.yml

name: Test GitHub Action Demo-02
run-name: Run GitHub Actions-02 🚀
on: [push]

jobs:
  Test-GitHub-Action:
    runs-on: ubuntu-latest
    steps:
      - name: echo-02
        run: |
          echo "TEST ECHO-02"

위와 같이 YAML 파일 생성 후 GitHub 프로젝트에 Push 해보도록 하겠습니다.

 

 

workflows 2개가 생성되며 각각의 작업이 실행됨을 확인하실 수 있습니다.

 

 

여러 개의 YAML 파일을 사용하여 GitHub Actions을 구성하는 주요 이유는 모듈성과 재사용성을 높이기 위함입니다.

큰 규모의 프로젝트 또는 복잡한 워크플로우를 다룰 때, 단일 YAML 파일에 모든 것을 포함하는 것은 유지 보수가 어렵고 코드의 가독성을 떨어뜨릴 수 있습니다. 따라서 이를 해결하기 위해 여러 개의 YAML 파일을 사용하는 것이 일반적입니다.

 

예를 들어, build.yml, test.yml, deploy.yml과 같이 역할이나 기능에 따라 나누어진 YAML 파일을 만들고, 이를 메인 워크플로우 파일에서 jobs 섹션에서 불러와 사용할 수도 있습니다.

 

 


 

지금까지 workflows 설정 후 기본 실행을 해보는 시간을 가졌습니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[Reference]
https://docs.github.com/en/actions