Skip to content

Build CICD pipeline with Github Action ‐1 : Github Action 이해하기

HaileyKim edited this page Aug 13, 2023 · 1 revision

Build CICD pipeline with Github Action -1 : Github Action

Written by Dayeon Kim

전체적인 프로세스

cicdprocess


🚀 1. Understanding Github Action

github공식문서를 참고하여 정리하였음

먼저 전체적인 구조를 살펴보자면 아래와 같다 하나의 workflow 는 하나 혹은 그 이상의 jobs를 포함하고있으며, 이는 직렬 혹은 병렬적으로 구성되어진다.

cidis

githubAction의 여러가지 개념들에 대해 간단히 살펴보자

✅ Workflows

job을 실행시키는 자동화된 프로세스 레포지토리에 위치한 yaml파일로 정의되며, repository에서 event를 trigger 했을때 혹은 정의해놓은 manual에 따라 trigger 되며 실행된다. .github/workflows 디렉토리 하위에 저장한다

예를들면, test pull request를 build 하기 위해 하나의 워크플로우를 가지고, 다른 워크플로우로는 새로운 release가 생성될때마다 적용이 되도록 , 또 다른 워크플로우의 경우엔 issue를 생성할때마다 add label 하도록 설정해놓을 수 있다.


✅ Events

workflow 를 run 시키는 activity == tigger
ex. pull req 가 생겼을때, open issue, push commit 등등


✅ Jobs

workflow의 step
각자의 step이 실행되는 쉘 스크립트이다.
cf. dependencies : job들이 병렬적으로 실행하도록 하는것이 아니라 다른 job에 대해 의존성을 갖도록 설정하는것 , 특정 Job이 끝날때까지를 기다릴 수 있다.


✅ Action

performs a complex but frequently repeated task
ex. 배포 자동화


✅ Runner

trigger 될때마다 실행하는 서버



🚀 2. Understanding Workflow file

yaml의 syntax 이해하기 결론적으로 우리 프로젝트에서 사용한 배포 자동화 프로세스와 관련하여 개념들을 이해하자

✅ name

name: learn-github-actions

optional
workflow의 보여지는 이름


✅ run-name

run-name: ${{ github.actor }} is learning GitHub Actions

workflow 의이름
Actions 탭에서 보여지는 이름


✅ on

on: [push]

trigger을 명시해주는 부분
예를들면 push event
repository에 push 혹은 merge pull req 할때마다 trigger 되도록 설정한다.

우리 코드에서의 예시는 아래와 같음

on:
  push:
    branches:
      - feature/21-deploytestbranch

feature/21-deploytestbranch라는 브렌치에 push를 할때마다 trigger이 되도록 설정


✅ jobs

jobs:

workflow에 속해있는 job들 나열
ex. 우리 프로젝트에서는 배포 자동화 과정들을 job으로 나열하였음


✅ steps

steps:

steps 정의
Each item nested under this section is a separate action or shell script.
ex. 배포 자동화 jobs들을 step으로 처리한다는 의미


✅ uses

- 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

- run: npm install -g bats

run
실행할 command

Clone this wiki locally