[GitHub Actions] 깃헙 액션 간단하게 시작해보기

2022. 11. 24. 00:1303. Resources/CI CD

728x90
반응형

왜 GitHub Actions를 공부하나?

유데미에서 블랙프라이데이 할인으로 강의를 싸게 팔길래 깃헙 액션과 관련된 강의를 구매했다.

이유는 최근에 포프TV 유튜브에서 본 내용인데, 자기가 참여할 프로젝트의 개발 환경을 밑바닥부터 세팅하지 못하면 intermediate라고 불릴 자격이 없다고 했다.

개발 환경에는 디펜던시도 있고, ide 세팅도 있지만 CI/CD 파이프라인을 세팅하는 것도 있었다.

 

원래 회사에서 DevOps Engineer 포지션으로 있을 때에는 Jenkins(젠킨스)를 이용해서 회사 내부의 CI/CD 파이프라인을 관리했었다.

물론 정말 좋은 무료 툴이고 확장성도 좋지만, 아무래도 써드파티다보니 여러 한계점이 많긴 했다.

그리고 Jenkins pipeline에 대한 문서가 엄청 잘 제공되는 편도 아니었고.

진짜 구글링과 문서, 이슈들을 트래킹하면서 해결했던 문제들이 엄청나게 많았던 것도 한몫한다.

 

결국 어떤 레포에서 하는 작업을 이용해서 여러 작업을 하는 것이기 때문에, 레포를 관리해주는 깃헙에서 네이티브로 CI/CD 기능을 제공해준다면 그걸 안 쓸 이유도 전혀 없다.

물론 어느정도 사용량 제한이 있지만, 이것도 역시 다른 방법으로 해결할 수 있기 때문에 문제가 되진 않는다.

게다가 확실히 yaml파일로 작성하다보니 가독성도 엄청 좋고, 정말 좋았던 점은 문서화가 너무 잘 되어있었다... 

문서 링크는 아래에!

 

그럼 간단하게 세팅하는 부분을 살펴보자!

Github Actions (깃헙 액션) 초기 설정 방법!

완전 처음 세팅은 간단히 만들어둔 레포에서 진행해봤다.

 

먼저 README 파일만 있는 깡통 레포를 하나 만들었다.

아마 처음에는 바로 아래 사진과 같은 화면을 볼 수 있을거다.

이 화면을 돌아다녀 보면 여러 프리셋들이 있지만, 일단 Simple workflow의 Configure 버튼을 눌러 선택한다.

 

눌러보면 위에 yml 파일의 이름을 설정할 수 있는 부분이 있다.

해당 파일은 위에 적혀있는 것처럼 해당 레포지토리의 .github/workflows/ 폴더 아래에 위치하게 된다.

 

기본 코드를 가지고 한 번 하나씩 체크해보자!

 

GitHub Actions workflow 구성 요소

전체 코드는 아래와 같은데 하나씩 살펴보자.

# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the "main" branch
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v3

      # Runs a single command using the runners shell
      - name: Run a one-line script
        run: echo Hello, world!

      # Runs a set of commands using the runners shell
      - name: Run a multi-line script
        run: |
          echo Add other actions to build,
          echo test, and deploy your project.

name:

Workflow의 이름을 정하는 부분이다.

여기에서 정한 이름대로 Actions 탭에서 볼 수 있다.

 

on:

어떤 이벤트에 따라 해당 workflow를 실행시킬 것인지 정하는 부분이다.

여러가지 옵션을 정할 수 있는데, 자세한 내용은 여기서 볼 수 있다.

간단히 설명하면, push의 경우 해당 레포에 push 이벤트가 발생하는 경우에 이 workflow를 실행하겠다는 옵션이다.

만약 수동으로 이 workflow를 실행하고 싶으면 workflow_dispatch 옵션을 on 아래에 추가해주면 된다.

 

jobs:

이 workflow가 해야할 일들을 정의하는 부분이다. 

yaml 파일의 문법에 맞게 job의 구분은 탭을 한 번 쳐서 하면 된다.

 

build:

이게 정의한 job의 이름이다.

이름은 사람이 정하기 나름이니까 설명은 패스하겠다.

 

runs-on:

어디에서 이 job을 실행시킬지 설정하는 부분이다.

깃헙에서도 가상 머신을 제공해주기도 하고,

자신이 직접 사용할 머신을 정해도 된다.

 

steps:

해당 job에 들어가는 일들이 모여있는 부분이다.

매 step을 탭 한 번과 -(하이픈) 으로 구분해서 작성하면 된다.

 

steps / uses:

Github Actions에는 자주 사용되고, 반복되는 작업들을 패키지처럼 만들어둔 것들이 있는데 이걸 Action 이라고 부른다.

어떤 Action들이 있는지는 여기에서 볼 수 있다.

이런 Action을 이용하기 위해서는 uses: 라는 커맨드를 이용하면 된다.

각 Action 별 사용법은 해당 Action 들의 레포지토리나 문서에서 확인해볼 수 있다.

 

steps / name:

해당 step의 이름을 나타내는 부분이다. workflow의 맨 윗부분에서 적은 name과는 구분되게 해당 스텝의 이름만 나타낸다.

 

steps / run:

해당 step에서 진행할 작업을 나타내는 부분이다.

shell script 형태의 커맨드를 입력하면 되고,

단일 커맨드를 사용하는 경우와 복수 커맨드를 사용하는 경우에 대한 사례가 위에 적혀있다.

 

 

마치며

나도 앞으로 이 툴을 이용해서 환경을 자주 구축해야하기 때문에, 이해하기 위해서 열심히 적어봤다.

이제 이 정보를 바탕으로 내가 새롭게 만드는 레포들에는 최대한 액션을 붙여서 이것저것 테스트를 해봐야겠다.

반응형