포트폴리오/주차장 서비스(with turu parking)

[포트폴리오/주차장 서비스(with turu parking)] - (5) Github Actions를 활용한 CI/CD 자동화

빗방울소리 2024. 2. 20. 23:29

 

 

 

Github

https://github.com/mii2026/sw15

 

GitHub - mii2026/sw15

Contribute to mii2026/sw15 development by creating an account on GitHub.

github.com

 

 

 

 

 

목차
1. 들어가며
2. Github Actions와 CI/CD 자동화
3. 자동화 테스트
4. 마치며

 

 

 

 

 

들어가며

 

 

 이번 글에서는 프로젝트의 CI/CD 자동화 과정에 대해서 정리해보려고 한다. Github Actions에 대한 내용과 pull request 시 프로젝트 빌드, 도커 이미지화를 거쳐 EC2 환경에 업로드하여 실행하는 과정을 자동화하는 내용에 대해 소개하겠다.

 

 

 

Github Actions와 CI/CD 자동화

더보기

 보통 CI/CD 자동화라고 하면 젠킨스를 활용하여 구축하는 경우가 많다. 하지만 이번 프로젝트 관리가 Github로 이루어지기도 하였고, 젠킨스에 비해 사용이 쉬운 Github Actions를 활용하여 CI/CD 자동화 환경을 구축하였다.

 

 

 

 

 

 

 

 

 

 Github Actions는 Github에서 호스팅하는 CI/CD 자동화 및 워크플로우 툴이다. 단순 CI/CD 뿐만 아니라 테스트 수행, 릴리스 빌드, 서비스 배포 등 많은 기능을 지원한다. 

 

 

Github Actions의 핵심 

1. 워크플로우

 

  Github Acitons는 YAML파일 형식의 워크플로우를 작성하여 동작하는 방식으로 가시성이 높다.

 

 

2. 작업(Actions)

 

  Github Acitons는 워크플로우에 선언된 개별 작업들을 수행하는 방식으로 동작한다. 예를들어 프로젝트 빌드, 테스트 코드 실행, 도커 이미지 생성 등의 모든 행동들은 하나의 '작업'으로 분류되어 처리한다.

 

 

 

3. 이벤트

 

 Github Acitons는 특정한 이벤트가 트리거됨에 따라 동작한다. 예를들어 작성한 코드를 push했을 때 테스트를 실행하는 등의 유연한 처리를 가능하게 만들 수 있다.

 

 

 

 

4. 런너(Runner)

 

 Github Acitons는 작업을 하는 환경을 설정할 수 있다. 운영체제 또한 리눅스, 윈도우 Mac등 원하는 환경에서 코드를 테스트하거나 서비스를 배포할 수 있도록 만들 수 있다.

 

 

 

 

 

 

 

 

 

 

Github Actions 사용을 위한 YAML 파일

 

 

 

 

  Github Actions를 사용하기 위해서는 YAML파일을 만들어 원하는 작업들을 형식에 맞게 작성해줘야 한다. 위의 이미지는 프로젝트를 빌드하고 작성된 도커 파일을 이용해 도커 이미지화 하는 과정의 일부이다.

 

 

 

 

 명령어 자체는 사람이 직접 하는 것과 동일하고, 이것을 Github Actions가 해주는 차이만 있기에 YAML파일의 가독성도 좋은편이라는 것을 확인할 수 있다.

 

 

 

 

자동화 테스트

더보기

 이번 팀 프로젝트의 경우 '프로젝트 빌드 -> 도커 이미지화 -> 도커 이미지 push -> EC2 접속 -> EC2에서 도커 이미지 pull -> 도커 컨테이너 실행' 의 일련의 CI/CD 과정을 Github Actions를 통해 자동화 하였다. 

 

 

 

 

 

 

 

워크플로우 진행 실패

 

 

 

 YAML파일을 작성한 후 Github Actions 이벤트가 트리거 되면 작성해둔 워크플로우대로 작업이 진행이 된다. 이 프로젝트의 경우 빌드 및 도커 이미지 push, EC2에서 접속하여 이미지를 pull하고 컨테이너를 띄우는 커다란 Action두개로 분리하였다.

 

 

 

 

 

 EC2 주소와 관련해서 오류가 있었어서 작업 도중에 오류가 난적이 있는데, 위의 이미지와 같이 어떤 작업을 수행하다 멈췄는지까지 전부 표시를 해준다.

 

 

 

 

 

 

 

 

 

워크플로우 완료

 

 

 

 EC2 주소 관련 문제를 해결하고 다시 이벤트를 트리거하였고 Github Actions가 모든 작업을 정상적으로 마쳤음을 확인할 수 있다.

 

 

 

 

 

 

 

 

 

EC2에 접속하여 정상작동 확인

 

 

 

 

 

 마지막으로 EC2에 접속하여 배포한 서버가 잘 돌아가고 있는 지 확인해 주었다. Github Actions가 push한 도커 이미지로 도커 컨테이너를 알맞은 port번호를 열어 띄운것을 확인할 수 있다.

 

 

 

 

마치며

 

 Github Actions를 사용하여 CI/CD 자동화 환경을 구축해보았다. 처음 사용해보았음에도 나름 직관적이고 어떤 부분에서 워크플로우 실행이 중지 되었는지 까지 확인이 가능해서 정말 유용한 툴이라고 생각한다.