-
Notifications
You must be signed in to change notification settings - Fork 0
Build CICD pipeline with Github Action ‐1 : Github Action 이해하기
Written by Dayeon Kim
github공식문서를 참고하여 정리하였음
먼저 전체적인 구조를 살펴보자면 아래와 같다 하나의 workflow 는 하나 혹은 그 이상의 jobs를 포함하고있으며, 이는 직렬 혹은 병렬적으로 구성되어진다.
githubAction의 여러가지 개념들에 대해 간단히 살펴보자
job을 실행시키는 자동화된 프로세스
레포지토리에 위치한 yaml파일로 정의되며, repository에서 event를 trigger 했을때 혹은 정의해놓은 manual에 따라 trigger 되며 실행된다.
.github/workflows
디렉토리 하위에 저장한다
예를들면, test pull request를 build 하기 위해 하나의 워크플로우를 가지고, 다른 워크플로우로는 새로운 release가 생성될때마다 적용이 되도록 , 또 다른 워크플로우의 경우엔 issue를 생성할때마다 add label 하도록 설정해놓을 수 있다.
workflow 를 run 시키는 activity == tigger
ex. pull req 가 생겼을때, open issue, push commit 등등
workflow의 step
각자의 step이 실행되는 쉘 스크립트이다.
cf. dependencies : job들이 병렬적으로 실행하도록 하는것이 아니라 다른 job에 대해 의존성을 갖도록 설정하는것 , 특정 Job이 끝날때까지를 기다릴 수 있다.
performs a complex but frequently repeated task
ex. 배포 자동화
trigger 될때마다 실행하는 서버
yaml의 syntax 이해하기 결론적으로 우리 프로젝트에서 사용한 배포 자동화 프로세스와 관련하여 개념들을 이해하자
name: learn-github-actions
optional
workflow의 보여지는 이름
run-name: ${{ github.actor }} is learning GitHub Actions
workflow 의이름
Actions 탭에서 보여지는 이름
on: [push]
trigger을 명시해주는 부분
예를들면 push event
repository에 push 혹은 merge pull req 할때마다 trigger 되도록 설정한다.
우리 코드에서의 예시는 아래와 같음
on:
push:
branches:
- feature/21-deploytestbranch
feature/21-deploytestbranch
라는 브렌치에 push를 할때마다 trigger이 되도록 설정
jobs:
workflow에 속해있는 job들 나열
ex. 우리 프로젝트에서는 배포 자동화 과정들을 job으로 나열하였음
steps:
steps 정의
Each item nested under this section is a separate action or shell script.
ex. 배포 자동화 jobs들을 step으로 처리한다는 의미
- uses: actions/checkout@v3
This is an action that checks out your repository onto the runner, allowing you to run scripts or other actions against your code (such as build and test tools).
checkout 하도록 하는 코드
ex. 우리 프로젝트에서 작성한 코드는 아래와 같음
# (1) 기본 체크아웃
- name: Checkout
uses: actions/checkout@v3
with:
ref: feature/21-deploytestbranch
feature/21-deploytestbranch 의코드를 반영하도록 ref 설정 추가
- run: npm install -g bats
run
실행할 command