[CI/CD] 내가 보기 위해 정리한 GitHub Action

이명진·2024년 1월 22일
0

CI/CD

목록 보기
1/2

입문

회사에서 GITHUB에 코드를 관리하기 때문에 CI/CD 업무는 GitHub Action인 Yml 파일을 이용해서 작업하게 되었다. Azure를 활용해서 배포 이용했었는데 이와 관련해서 자동으로 YML파일을 생성해 주었으나.
배포가 되긴 개뿔 에러만 터져서 에러 방지용으로 조금 공부해서 지금은 잘 작동하게만 구현하였으나
YML 에서 파일 수정 등을 해야 하면 무섭기도 하여서 공부하고 정리해본다.

출처

공부는 DaleSeo 이분이 정리를 깔끔하게 잘해놨다. 핵심만 정리해두셨는데 거기서 또 내가 나중에 복습하기 위해서 핵심의 핵심만 따로 작성해 본다. 내용도 엄청 많아서 시리즈로 작성될것 같다.

출처 : https://www.daleseo.com/github-actions-basics/

GitHub Action이란 ?

깃허브(GitHub)에서 제공하는 CI(Continuous Integration, 지속 통합)와 CD(Continuous Deployment, 지속 배포)를 위한 서비스 (2022.4월 에 쓰신글인데 최근에 추가되었다고 하니 2022년 상반기쯤 생성된것 이라 추측이 된다 )

하는일

코드 저장소에서 어떤 이벤트(event)가 발생했을 때 특정 작업이 일어나게 하거나 주기적으로 어떤 작업들을 반복해서 실행시킬 수도 있다.

예 ) 코드 변경분에 문제가 없는지 각종 검사 , 빌드(build)하고 상용 서버에 배포 , 특정 시각에 그날 하루에 대한 통계 데이터를 수집

workflows

GitHub Actions에서 가장 상위 개념인 워크플로우
.github/workflows 폴더 아래에 위치한 YAML 파일로 설정 한다.
하나의 코드 저장소에는 여러 개의 워크플로우, 즉 여러 개의 YAML 파일을 생성할 수 있다. (나의 경우 dev서버와, 운영 서버로 두가지 파일로 운영하고 있다. 다른 개발자의 코드를 보면 하나의 작업을 캡슐화 시켜서 여러개의 파일로 나눠서 import 형식으로 사용하는것 같다. )

속성

on

해당 워크플로우가 언제 실행되는지를 정의 한다.


on:
  push:
    branches: [main]
// main 브랜치에 push 이벤트가 발생할 때 마다 워크플로우를 실행 
on:
  schedule:
    - cron: "0 0 * * *"
// 매일 자정에 워크플로우를 실행 
// 출처 : DaleSeo님의 블로그 

jobs

해당 워크플로우가 구체적으로 어떤 일을 해야하는지 명시한다.
독립된 가상 머신(machine) 또는 컨테이너(container)에서 돌아가는 하나의 처리 단위를 의미한다.
하나의 워크플로우는 여러 개의 작업으로 구성되며 적어도 하나의 작업은 있어야 한다.
(나의 경우 job가 1개 이고 그 안에 빌드와 배포 단계가 있다. )
모든 작업은 기본적으로 동시에 실행되며 필요 시 작업 간에 의존 관계를 설정하여 작업이 실행되는 순서를 제어할 수도 있습니다.


jobs:
  job1:
    runs-on: ubuntu-latest
    steps:
// 우분투의 최신 실행 환경에서 실행 
// runs-on 속성은 실행 환경을 지정해주는 것
// 출처 : DaleSeo님의 블로그 

Steps

여러 단계의 명령을 순차적으로 실행 하기 위해 job에서 stops로 모델링 한다.

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: npm install
      - run: npm test
// run 속성은 커멘드나 스크립트를 실행한다. 
// uses는 액션을 사용할때 사용한다. 
// 출처 : DaleSeo님의 블로그 

YAML 문법에서 시퀀스(sequence) 타입을 사용하기 때문에 각 단계 앞에 반드시 “-“ 를 붙여줘야 한다.

Actions

 GitHub Actions에서 빈번하게 필요한 반복 단계를 재사용하기 용이하도록 제공되는 일종의 작업 공유 메커니즘

코드 보면서 정리

코드를 보면서 정리해보자.

name: Build and deploy Node.js app to Azure Web App  // 이름 설정. 이름 을 정애 놔야 빠르게 어떤 업무인지 식별 가능하다.

// on을 활용하여 언제 워크 플로우가 실행될지 알려준다. 
on:
  push:
    branches:
      - dev
  workflow_dispatch:
// push 일때 실행되며 branche는 dev일때 실행되는 로직이다. workflow_dispatch 는 아직 모르겠다. 

jobs:
  build:
    runs-on: ubuntu-latest

// jobs로 어떤 작업을 수행할지를 설정한다. 우분투로 빌드 작업을 실행한다. 
// jobs아래 step을 두어서 순차적으로 실행하게 할수도 있다. 이는 생략. 
profile
프론트엔드 개발자 초보에서 고수까지!

0개의 댓글