| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- DevOps
- Go-lang
- AWS
- 디자인 패턴
- 구조 패턴
- terraform
- PostgreSQL
- 오블완
- 티스토리챌린지
- docker
- 지표
- AWS 비용 절감
- 신혼 여행
- 논문 정리
- Playwright
- ssh
- 14일 공부
- 토스
- 커머스
- MAPF
- 청첩장 모임
- leetcode
- 실용주의 프로그래머
- 경로 계획 알고리즘
- Rust
- 생성 패턴
- amazon ecs
- study
- Til
- github
- Today
- Total
밤 늦게까지 여는 카페
github action을 활용한 CI - CD는 어디 두고 왔어요? 본문
CI/CD 툴이 뭘까? - 주니어 개발자의 오해의 마지막에서 말했던 것처럼 이번에는 github action 대해서 공부해보려고 해요!
github action이란
github action은 github에서 제공하는 CI/CD 플랫폼입니다.

여기서 플랫폼이라고 하는 이유는 단순히 github에 저장되는 코드만을 대상으로 기능을 제공하는 것이 아니라
MarketPlace에서 사용자들끼리 플러그인을 공유하기도 하고, 다른 플랫폼과의 연동 기능도 제공하기 때문입니다.
조금 더 자세한 설명을 원하신다면 공식 문서를 참고해보세요. https://docs.github.com/en/actions
CI가 뭔지 다시 설명해줄 수 있을까요?
CI는 Continuous Integration의 약자로, 모든 소스코드가 항상 유효하게 동작한다는 것을 보장하자는 것입니다.
그러면 CI를 위해서 CI툴들은 어떤 기능을 제공할까요?
코드가 수정될 때마다, 빌드, 테스트, 인터페이스 유효성 검사 등을 자동화 시켜주는 것입니다.

github action으로 할 수 있는 것을 살펴봤는데요!
이제 github action의 구체적인 사용법에 대해서 공부해볼까요?
github action 설정 파일: .github/workflows/
제가 예전에 작업했던 프로젝트의 workflow 파일을 예시로 들어봤습니다.
workflow 파일은 1) 어떤 이벤트를 모니터링 할지, 2) 원하는 이벤트가 발생했을 때 무슨 작업을 수행할지 로 나눌 수 있습니다.
이벤트 모니터링
모니터링 할 수 있는 대표적인 이벤트로는 push, pull_request가 있습니다.
만약 master, develop 브랜치들을 모니터링 하고 싶다면 다음과 같이 작성하면 됩니다.
on:
push:
branches:
- master
- develop
작업 목록
작업 목록 부분에는 하고 싶은 모든 작업을 Shell 스크립트로 작성하면 됩니다. 혹은 플러그인을 활용할 수도 있구요.
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.x
uses: actions/setup-go@v2
with:
go-version: ^1.13
- name: Check out code into the Go module directory
uses: actions/checkout@v2
- name: Get dependencies
run: |
go get -v -t -d ./...
- name: Test
run: go test -v ./...
이제 두 가지 부분을 합쳐서 하나의 workflow 파일을 만들어볼까요?
name: CI
on:
push:
branches:
- master
- 'feat/**'
- 'feat**'
pull_request:
branches:
- master
- 'feat/**'
- feat**
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.x
uses: actions/setup-go@v2
with:
go-version: ^1.13
- name: Check out code into the Go module directory
uses: actions/checkout@v2
- name: Get dependencies
run: |
go get -v -t -d ./...
- name: Test
run: go test -v ./...
참고: https://github.com/goodahn/alarm-for-programmer/blob/main/.github/workflows/ci.yml
이렇게 workflow 파일을 추가하면 pull request가 열리거나 push 될 때마다 github에서 build, test가 자동으로 실행됩니다.

여러분도 진행하고 있는 프로젝트에 CI/CD 도입을 고려 중이라면 github action으로 시도해보는 것은 어떠신가요?
P.S.
CD는 진행하고 있는 react 스터디를 통해서 다뤄보도록 하겠습니다 ㅎㅎ
'DevOps' 카테고리의 다른 글
| terraform cloud - 개인 PC에서 terraform 관리는 그만!!! (0) | 2022.10.29 |
|---|---|
| terraform이 뭘까? - IaC! 인프라도 형상 관리해야죠! (0) | 2022.10.18 |
| github action을 활용한 CD - CD 여기 있어요 (0) | 2022.10.13 |
| CI/CD 툴이 뭘까? - 주니어 개발자의 오해 (0) | 2022.10.10 |
| DevOps 란 (0) | 2022.10.03 |