본문 바로가기
Deploy

Github Actions

by Mia_ 2023. 2. 5.

Github Actions

- Github가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프 라인을 자동화 할 수 있는 CI/CD 플랫폼

 

- 레포지토리에서 Pull request나 push 같은 이벤트를 트리거로 Github 작업 Workflow를 구성할 수 있음

- Workflow는 하나 이상의 작업이 실행되는 자동화 프로세스로, 각 작업은 자체 가상 머신 또는 컨테이너 내부에서 실행됨

 

- Workflow는 .yml (혹은 .yaml) 파일에 의해 구성되며, 테스트, 배포 기능에 따라 여러개의 Workflow도 만들 수 있음

- 생성된 Workflow는 .github/workflows 디렉토리 하위에 위치함

 

- 비공개 레포지토리의 경우 Github Actions가 작동할 때 용량과 시간이 제한되어 있으며 공개 레포지토리는 무료로 사용이 가능함 


튜토리얼 실습 후

- Github Action은 Github의 특정 이벤트에 맞게 다양한 작업을 시킬 수 있는 CI/CD 플렛폼임

- EC2와 같은 하나의 가상 인스턴스를 실행시켜서 원하는 작업을 시킬 수 있음

- ./.github/workflows/pullRequest.yml 파일을 확인해 보면 언제 어떤 job을 할지 명시되어 있음 

npm install은 빌드를 위한 준비과정으로 볼 수 있음. Node.js 로 만든 서버 애플리케이션은 npm으로 관련 오픈 소스를 모두 깔끔하게 설치해야 작동하기 때문
npm test는 유닛 테스트 과정임. 작성한 코드가 요구사항 충족을 위한 최소한의 조건을 만족했는지 확인하고 있음 
name: Bare Minimum Requirements

# 언제 job을 작동시킬지
on: [push, pull_request]

# 어떤 job을 할지
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Bare Minimum Requirements
        uses: actions/setup-node@v1
        with:
          node-version: '16'
      - run: npm install
      - run: npm test

YAML

: Yet Another Markup Language의 약자로 사람이 읽을 수 있는 데이터 직렬화 언어를 의미

- 파일로 작성시 확장자는 .yaml 혹은 .yml 확장자를 가짐

- YAML은 사람이 읽을 수 있고 이해하기 쉬어 프로그래밍 언어중에서도 인기가 높음

- 또한 다른 프로그래밍 언어와 함께 사용할 수도 있음 

- TAML은 유연성과 접근성으로 인해 자동화 프로세스를 생성하는데에도 사용됨 

- YMAL은 JSON의 상위 호환격으로 기존 json 문서를 그대로 yaml 파일로 사용하거나 원하는 부분만 손볼 수 있음

 

 

YAML 문법

- YAML도 일종의 프로그래밍 언어이기 때문에 문법이 잇음

- 해당 문법을 지켜 작성하지 않으면 YAML 파일로 읽지 못하기 때문에 문법을 잘 키겨 줘야 함 

 

1. 주석, 문서의 시작과 끝

# : 주석

--- : 문서의 시작(선택사항)

... : 문서의 끝(선택사항)

#이런 식으로 주석을 작성할 수 있습니다.

--- #문서 시작

#이 사이에 내용이 들어갑니다.

... #문서 끝

들여쓰기 : 들여쓰기는 기본적으로 2칸 또는 4칸을 지원함. 보통 2칸씩 들여쓰는 것을 추천. 탭키가 아닌 스페이스 키로 들여 써야 함

 

2. 기본 표현

key : value이며 : 다음에는 무조건 공백 문자가 와야 함 

key: value

 

3. 자료형

- int, string, boolean, list, 매핑을 지원

- 여기서 Int와 string 타입은 스칼라(Scalar)라 부르고, 배열 혹은 리스트는 시퀀스(Sequence)라 부름

- 매핑에는 기본 표현인 key-value 쌍 및 hash, dictionary가 포함됨

#int(숫자)
int_type: 1

#string(문자열)
string_type: "1"

#blooean(참/거짓)
boolean_true_type: true
boolean_false_type: false

#이외에 yes, no로 작성하기도 합니다.
yaml_easy: yes
yaml_difficult: no

#리스트(배열 형태)
person:
  name: wonpil Kim
  job: Developer
  skills: 
    - docker
    - kubernetes
  # JSON 형식의 "skill" : [docker, kubernetes]와 같습니다.

 

4. 객체

- 객체 표현은 key 작성 후 두칸을 들여서 key-value 형태로 작성해 주거나, key를 작성 후 중괄호로 한번 묶고 key-value 형태로 작성

key: 
  key: value
  key: value

#또는 이렇게도 작성합니다. 가독성을 위해 사용합니다.
key: {
  key: value,
  key: value
}

 

 

5. Text

- 줄바꿈 표현( | )과 줄바꿈 무시( > ) 표현이 있음

# |는 줄바꿈 표현입니다.
# JSON 형식의 "comment_line_break": "Hello codestates.\nIm kimcoding.\n"과 같습니다.
comment_line_break: |
  Hello codestates.
  Im kimcoding.

# >는 줄바꿈 무시 표현입니다.
# JSON 형식의 "comment_single_line": "Hello world my first coding."과 같습니다.
comment_single_line: >
  Hello world
  my first coding.

 

6. 문자열 따옴표

- key-value 쌍에서  value에 : 가 들어간 경우 반드시 따옴표가 필요함

# error가 납니다.
windows_drive: c:

# 이렇게 써야 합니다.
windows_drive: "c:"
windows_drive: 'c:'

 

 

YAML 사용법 및 실제 사용 사례

- 일반적으로 설정 파일(ex. configure file 등)에 사용하기 좋음

- 따라서 spring boot, github action 등 다양한 CI/CD 툴이나 프레임워크에서 사용되고 있음

 

 

'Deploy' 카테고리의 다른 글

EC2 서버 배포 + S3 정적 웹 사이트 배포  (0) 2023.03.15
Proxy  (0) 2023.02.06
배포 자동화  (0) 2023.02.04
CI/CD  (0) 2023.02.04
DevOps  (0) 2023.02.04