GitHub Actions (1)

greenTea·2024년 1월 25일
0
post-thumbnail

GitHub Actions를 활용한 CI/CD 자동화

GitHub ActionsGitHub에서 제공하는 CI/CD(Continuous Integration / Continuous Deployment) 플랫폼으로, 소프트웨어 개발 및 배포 프로세스를 자동화하는 강력한 도구입니다. 이를 통해 코드 변경 사항을 검증하고 배포하는 일련의 작업을 간편하게 관리할 수 있습니다.

GitHub Actions에서는 다양한 작업이 가능한데 도커로 이미지 빌드, 저장소 푸시 등이 가능하며 slack과 연동하거나 aws, gcp와 연결하는 등 다양한 작업이 가능합니다.

GitHub Actions 시작하기

GitHub Actions를 사용하기 위해서는 다음과 같은 과정이 필요합니다.

  1. GitHub Repository로 이동 - GitHub Actions를 활용하려면 먼저 해당 Repository로 이동합니다.

    GitHub Repository로 이동

  2. GitHub Workflow 생성 - GitHub Repository에서 "Actions" 탭을 선택하고, "Set up a workflow yourself" 옵션을 선택하여 GitHub Workflow를 생성합니다.

    GitHub Workflow 생성

  3. Workflow 파일 작성 - Workflow 파일을 작성하여 자동화 작업을 정의합니다. 이 파일은 .github/workflows 디렉토리에 저장됩니다. 아래는 예시 Workflow 파일입니다.

Github action yml 파일

name: show github action
on: [workflow_dispatch]

env:
  NAME: "github friends"
jobs:
  first:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout 
      uses: actions/checkout@v2
    - name: execute first
      run: |
        echo "execute first!!!"
        echo "actor: ${{ github.actor }}"
    - name: execute second
      run: |
        echo "execute second!!!"
  second:
    needs: first
    runs-on: ubuntu-latest
    steps:
    - name: execute third
      run: |
        echo "third job!!!"
        echo "name: $NAME"

GitHub Actions에서는 YAML 파일을 사용하여 워크플로우를 정의하고 구성합니다.

위의 예시 YAML 파일을 간단히 설명하면

  • name: Workflow의 이름을 설정합니다.

  • on: 언제 Workflow를 실행할지를 지정합니다. 위의 예시에서는 workflow_dispatch 이벤트를 사용하여 수동으로 실행할 수 있게 했습니다.
    위의 이벤트외에도 push, commit, issue 등 다양한 이벤트에 대해서도 정의할 수 있습니다.

  • env: 환경 변수를 설정합니다. 여기서는 NAME 환경 변수를 정의하고 값을 할당했습니다. env의 경우 해당 워크플로우에서만 사용할 수 있는 변수입니다.

  • jobs: Workflow에 포함된 작업을 정의합니다. 하나의 워크 플로우에는 여러개의 job을 가질 수 있습니다.

  • runs-on: 작업을 실행할 환경(예: 운영 체제)을 설정합니다. 일반적으로는 ubuntu를 사용하지만 경우에 따라서는 mac, window등을 설정할 수도 있으며 stragey를 사용한다면 여러 환경에 대해서 작업이 가능합니다.

  • steps: 작업의 단계를 정의합니다. 각 단계는 이름(name)과 해당 단계에서 실행할 명령(run)을 포함합니다.

  • ${{ github.actor }}: github 내에서 미리 정의한 변수들이 있습니다. 이를 이용하기 위해서는 ${{ }}로 원하는 값을 넣어주시면 됩니다.(제공하는 변수가 매우 많으므로 github action doc을 참고하시면 될 것 같습니다.)

참고

  • 하나의 job여러개의 step을 가지며 각 step은 순차적으로 진행이 됩니다.
  • 하나의 workflow여러개의 job을 가지며 각 job은 병렬로 실행이 됩니다.
    위의 yml파일의 경우 needs를 통해 first가 끝나고 나서 진행이 되도록 만들었습니다.
  1. Workflow 실행 - 설정한 Workflow를 실행하기 위해 "Run workflow"를 선택하고 원하는 파라미터를 입력한 후 실행합니다. (여기서는 input을 설정하지 않았기에 파라미터를 설정할 필요는 없습니다.)

    Workflow 실행

  2. Workflow 실행 결과 확인 - Workflow가 실행되면 진행 상황을 모니터링할 수 있으며 성공 또는 실패 여부를 확인할 수 있습니다. (push,commit에 걸어 놓았다면 해당 이벤트가 발생하면 자동으로 Workflow가 실행이 됩니다.)

    • 실행 중

      실행 중

    • 실행 성공

      실행 성공

    • 출력 결과

      출력 결과

출력 결과는 현재 second job의 결과를 출력하고 있습니다. 보시면 name의 경우 env에서 설정한 값이 나온 것을 알 수 있습니다.

참고자료

한 번에 끝내는 CI/CD Docker부터 GitOps까지

profile
greenTea입니다.

0개의 댓글