반응형

들어가며

GitHub Actions란?

  • GitHub Actions는 GitHub에서 제공하는 CI/CD 서비스를 말한다.
  • 저장소 내에서 특정 이벤트가 발생할 때마다 자동으로 테스트, 빌드, 릴리즈 등의 작업을 수행한다.
  • 이를 통해 코드 변경 사항을 빠르게 검증할 수 있고, 배포도 할 수 있다.
  • 워크플로우를 정의하기 위해 yaml 파일을 사용한다.
  • 코드 테스트 및 빌드는 runner 위에서 실행된다.
  • GitHub에서 제공하는 기본 runner를 사용하면 제한된 조건에서 무료로 사용할 수 있고, self-hosted runner를 사용할 경우 제한 없이 사용할 수 있다.

예제 설명

  • 아래 예제에서는 runner를 제한 없이 사용할 수 있도록 self-hosted runner로 사용하고, runner의 운영체제로 Linux를 사용한다.
  • 한 번 설정한 runner를 여러 repository에서 사용하고 싶으면 Organization을 추가 후 설정해야하는데, 여기서는 단일 repository에 runner를 설정하는 방식으로 설명한다. (Organization에 설정하는 것도 아래 과정과 비슷하다. Organization 생성 후 Settings -> Actions -> Runners에서 설정)

self-hosted runner 사용하기

self-hosted runner 설정하기

  • runner를 설정할 repository 접속 -> Settings -> Actions -> Runners -> New self-hosted runner
  • 나타나는 화면에서 운영체제를 Linux로 선택하면 하단에 다운로드 및 설정할 수 있는 스크립트가 나타난다.
  • 스크립트 내용은 아주 친절히 나와있으므로 runner 서버에 접속하여 그대로 실행하면 된다.

self-hosted runner 실행

위 설정대로 따라가면 마지막에 실행할 때 아래처럼 수행하라고 나온다.

./run.sh

위 명령어를 수행하면 프로세스가 foreground로 실행되므로 background로 실행될 수 있도록 아래처럼 실행한다.

nohup ./run.sh &

참고로 아래 명령어로 종료할 수 있다.

kill -SIGTERM -- -$(pgrep run.sh)

github actions으로 빌드 실행

workflows yaml 파일 설정

  • 경로 : ./.github/workflows/~~~.yml
  • 파일명은 아무렇게나 해도 되는데, 여기서는 파일명을 build.yml로 설정
  • 주의사항
    • actions는 master의 yaml 파일 기준으로 동작하므로 master 브랜치에 푸시되어 있어야함.
    • 동일 레벨의 env 내에서 정의된 환경변수를 참조하여 새 환경변수를 만드는 것은 불가능. ex) APP_NAME: demo-$VERSION (x)
    • 루트 env의 값을 하위 잡 내에 정의된 env에서 사용하는것은 가능.
    • actions/checkout@v4 실행시 이전에 체크아웃했던 파일들을 삭제하고, 새롭게 파일들을 체크아웃 하여 진행하게 되는데, 이 과정에서 이전에 체크아웃하고 빌드하면서 생성된 파일 중 하나라도 root 사용자 권한일 경우 삭제 과정에서 오류가 발생하여 잡이 실패가 되므로, 빌드하면서 생성되는 파일들은 일반 사용자 권한의 파일로 생성되도록 조치가 필요함.
name: build-demo

on:
  push:
    branches:
      - master      # master 브랜치 변경사항 발생시 아래 잡 실행
      - feature/**  # feature/로 시작하는 브랜치 변경사항 발생시 아래 잡 실행

permissions:
  contents: read

env:
  VERSION: v${{ github.run_number }} # github.run_number는 actions에서 실행된 잡의 실행 번호

jobs:
  demo-checkout: # job 이름. 원하는 이름으로 지정
    runs-on: self-hosted # 앞에서 설정한 self-hosted runner를 사용
    steps:
      - uses: actions/checkout@v4 # 해당 프로젝트를 git checkout. 

  demo-build:
    needs: demo-checkout # demo-checkout 빌드가 끝나면 demo-build 실행. 별도 지정 없으면 병렬로 job 실행.
    runs-on: self-hosted
    steps:
      - name: print info
        run: |
          echo "=== VERSION ==="
          echo $VERSION
          echo "=== ls -al ==="
          ls -al

빌드 실행 확인

repository -> Actions 접속

커밋 메시지를 제목으로 하는 항목들이 나타나고 상세 내용을 보고싶으면 제목 클릭

잡 상세 내용을 보고싶으면 해당 잡 선택 후 확인

반응형

'Development > Git' 카테고리의 다른 글

[Git] Git-flow & Github-flow  (0) 2021.01.22
[GitHub] GitHub Pages Jekyll 테마 적용하기  (0) 2019.05.25
[GitHub] GitHub Pages 사용하기  (0) 2019.05.25
[Git] Merge vs Rebase  (0) 2019.05.19
[Git] 명령어  (0) 2019.05.11

+ Recent posts