GitHub Actions 시작하기

noopy·2022년 4월 6일
1

🔁 배포와 자동화

목록 보기
1/6

개발을 어느 정도 하다보면 자동화란 키워드를 여기저기서 들을 수 있다.
나 역시도 마찬가지인데 여태껏 어려운 개념이라 생각해 차일피일 미루며 탐색만 해오다 생각보다 어렵지 않다고 느껴 정리를 해보려 한다.

Github에서는 Github Actions를 통해 CI/CD를 돕는다고 한다.

📝 개요

GitHub Actions란?

Github에서 제공하는 개발의 workflow를 자동화할 수 있게 도와주는 CI/CD 툴을 말한다.

CI/CD란?

  • CI (Continuous Integration): 테스트, 빌드 등의 프로세스를 지속적으로 실시해 프로덕션 환경의 품질을 유지하는 것을 의미한다.
  • CD (Continuos Delivery or Continuous Deploy): 프로덕션 서비스를 실제 사용자들에게 배포하는 프로세스를 의미한다.

통상적으로 CI/CD를 통해 개발의 전체적인 프로세스를 자동화하여 시간을 단축시킬 수 있다.

Github Actions 톺아보기

Github Actions를 사용하면 Github가 Runner라는 컴퓨터를 빌려준다.
특정 Event가 trigger 되면 깡통 컴퓨터에서 Runner를 구동시키거나
추가적인 데이터를 주입해 Runner를 구동시켜 여러가지 자동화된 프로세스를 진행한다.

  • Workflow
    레포지토리에 추가되는 자동화된 프로세스이다. 하나 이상의 job으로 구성되고 이벤트가 trigger 될 때 실행된다. yaml 파일로 workflow를 생성하며 Github 레포지토리에 .github/workflows 폴더 아래에 저장된다.
    yaml
  • Event
    Workflow를 trigger하는 특정활동이나 규칙

  • Job
    같은 Runner에서 실행되는 Step들의 집합. 기본적으로 Workflow는 여러 개의 Job들을 병렬로 실행하며 순차적으로 실행할 수도 있다.

  • Step
    Job 안에서 명령어를 실행시키는 Task이다. Step에서 명령을 내리거나 Action을 실행할 수 있다.

  • Action
    Step에서 Job을 만드는 독립적인 명령어이다. 자신이 직접 만들거나 Github Marketplace에서 만들어진 Action을 사용해도 된다.

  • Runner
    Github Actions runner application이 설치된 서버이다. 이를 통해 한 번에 하나의 Job을 실행시키며 과정을 기록해 Github에게 알려준다.

🎉 예제

레포지토리를 생성 후 Actions 탭에 들어가면 상단에 set up a workflow yourself가 보인다. 클릭하여 들어가자.

set up

yaml 파일의 템플릿이 만들어져 있다. 기존에 존재하던 주석을 제거하면 아래와 같은 형태이다.

name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Run a one-line script
        run: echo Hello, world!

      - name: Run a multi-line script
        run: |
          echo Add other actions to build,
          echo test, and deploy your project.

한 부분씩 살펴보자.

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

on에서 trigger될 Event를 정의한다. main 브랜치에서 push, pull_request가 일어나면 Job이 실행된다.

on: [push]

위와 같은 형태로 작성할 수도 있다.


jobs:
  build:
    runs-on: ubuntu-latest

Job을 어떤 OS에서 실행할 지 정의한다. 자세한 것은 Gihub Docs-run-on를 참고하자.



steps:
      - uses: actions/checkout@v3

      - name: Run a one-line script
        run: echo Hello, world!

      - name: Run a multi-line script
        run: |
          echo Add other actions to build,
          echo test, and deploy your project.

steps에서 Job이 할 수 있는 동작들을 나열한다. 각각의 Step은 독립적인 프로세스를 가진다.

  • uses: 해당 Step에서 사용할 Action. 직접 작성할 수도 있고 Github Marketplace의 Action들을 사용할 수도 있다.
    • {owner}/{repo}@{ref|version} 구조이다.
  • name: Step의 이름을 명시한다.
  • run: Runner에게 작성한 코드를 명령어로 실행하게 해준다.




기존 템플릿의 steps를 아래와 같이 변경 후 커밋을 한다.

 steps:
      - name: Run pwd
        run: pwd # 현재 사용자가 어떤 디렉토링 있는 알려주는 명령어

      - name: Run ls -al
        run: ls -al # Runner가 제공하는 디렉토리에 어떤 파일들이 있는지 알려줌.

짜잔, 실제로 레포지토리에 .github/workflows에 우리가 만든 파일이 생성된 것을 확인할 수 있다.

실제로 Job이 실행되는지 확인하기 위해 레포지토리를 로컬로 clone 후 README 파일을 생성해 push 했다.

다시 Action 탭에 들어가본 결과 on:push 이벤트가 발생하고 steps의 명령어들이 잘 실행이 되었다.

앞선 예시들은 생활코딩의 github.com - action을 참고해서 작성했다. 아직까진 실무에 도움이 될 코드들은 아니지만 Github Actions의 전체적인 흐름을 이해하는 데 많은 도움이 된 것 같다.

다음 게시글은 Action으로 체크아웃까지 진행해볼 것이다. 관련 정보는 생활코딩의 github.com - action의 18분부터 확인할 수 있다.

profile
💪🏻 아는 걸 설명할 줄 아는 개발자 되기

0개의 댓글