CI/CD 파이프라인 구축

2024. 5. 26. 01:49프로젝트/[EATceed] 몸무게 증량 어플

728x90


이번 학기 캡스톤 프로젝트에서 CI/CD 파이프라인 구축을 해보아서, 이번에도 비슷하게 하면 되겠지 라는 마음으로 임하였다가 꼬박 몇 시간 동안 파이프라인 작업만 하였습니다..

 

 

개발집에서는 GitHub Actions를 사용해 파이프라인을 구축하였습니다.

GitHub Actions를 사용한 이유는 아래와 같습니다.

  1. GitHub과 하나로 통합된 환경인 만큼 친숙하다.
  2. 친숙한 문법인 YAML 파일을 사용하여 파이프라인 구축이 가능하다.

다음으로, 파이프라인의 흐름을 살펴보겠습니다.

 

전체적인 흐름

docker image를 build 후 push 한 후 EC2 서버내에서 해당 이미지들을 Pull해와 docker-compose로 컨테이너들을 작동시키는 것이다.

그리고, docker-compose할 때 필요한 설정 파일들은 appleboy/scp-action을 이용하여 서버로 복사하였다.

마지막으로, 당연한 것이지만 외부에 노출되면 안되는 값들은 Actions Secret를 사용하였습니다.

 

 

 

마주한 오류들

appleboy/scp-action의 source 위치

현재 프로젝트 구조는 아래와 같이 되어있다.

 

 

각 레포로 분리되는 것이 좋다고 판단되지만, 개발 환경 배포의 편의성을 위해 위와 같은 폴더 구조를 가져가게 되었다. (BE에서 AI 인프라 또한 관리하고 있다.)

프로젝트 구조로 인해 source의 위치에 prefix처럼 ./BE/exceed를 붙여야했다.


 

Github Secrets를 못 찾아오고 있네

 

 

fork한 Repository에서 날린 Pull Request를 통해 이루어지는 Github Actions의 Work flow에는 Secrets가 전달되지 않는다.

따라서, 백엔드팀의 git flow를 upstream 레포 내에서 PR 하는 방식으로 변경하였습니다.

 

PR_Review가 승인되고, workflows를 실행하고 싶은데..

 

현재 개발집의 백엔드는 PR Review가 Approve되어야 Merge가 된다.

따라서, PR Review가 Approve된 이후에 CI/CD workflows가 실행되어야 한다.

그래서 공식문서를 참고해 트리거를 수정하였다.

 

 

 

https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#running-your-workflow-when-a-pull-request-merges-1

 

Events that trigger workflows - GitHub Docs

You can configure your workflows to run when specific activity on GitHub happens, at a scheduled time, or when an event outside of GitHub occurs.

docs.github.com

 

 

 

728x90