반응형
들어가며
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 |