🐳 DevOps

[CI/CD] GitHub Actions CI/CD 설명 및 기본 문법 정리

별빛난무 2025. 4. 22. 13:49
728x90

🍎 들어가기 전

안녕하세요! 😊 오랜만에 포스팅하네요^^ 제가 해커톤을 하면서 느꼈던 건데 인프라는 정말 중요하다는 것입니다. 이런 인프라 구축을 할 줄 알아야 해커톤에서 사용하고(대비), 실제 운영 서버를 구축할 때도 도움이 많이 됩니다. 그런 의미에서 오늘은 제가 요즘에 푹 빠져서 공부하고 있는 GitHub Actions CI에 관한 기본 문법에 대해서 같이 알아보는 시간을 가질거에요! (오랜만에 글 작성하려니까 떨리네요..)


🤔 CI / CD란?

CI(Continuous Integration)지속적인 통합, CD(Continuous Deployment)지속적인 배포라는 의미를 가지고 있습니다.

CI는 빌드 -> 테스트 -> 병합하는 과정이고 CD는 자동 배포를 말합니다.

 

근데 왜 CI랑 CD를 따로 분리하지 않고 말하느냐! 그건 CI를 거쳐서 CD가 동작하기 때문에 따로 말하지 않고 CI/CD라고 부릅니다.

아래와 같이 생각하면 쉬워요!(아닌가?ㅋㅋ)

  1. 개발자가 어떤 브랜치에 merge하거나 push하면 GitHub Actions가 실행
  2. 빌드 -> 테스트 -> 병합 순으로 동작
  3. 병합이 완료되면 GitHub Actions가 CD 실행(정확히 말하면 deploy.yml에 정의되어 있는 스크립트를 기반으로 실행)

이해가 되지 않더라도 나중에 다룰겁니다.

 

🎃 CI/CD를 사용하지 않으면 어떻게 될까?

만약 CI/CD를 사용하지 않고 배포하게 된다면 큰 문제는 없지만, 서비스를 업데이트를 진행해야 하는 상황인데 CI/CD를 사용하지 않으면 EC2를 중단해야 합니다. 이게 왜 문제가 될 수 있냐하면 실제 운영할 때는 사용자가 있을텐데 EC2를 중단하면 그 시간 동안은 서비스 이용을 하지 못합니다. 이런 문제를 방지하기 위해서 사용하는 것도 있고 프론트와 백엔드 API 연동에 개발이 완료되면 바로바로 업데이트 되니까 개발 테스트의 편의성이 올라갑니다.

 

* 따라서 실제 운영 서버를 구축할 때는 CI/CD는 선택이 아니라 필수라고 볼 수 있습니다.


👀 GitHub Actions란?

GitHub에서 제공해주는 CI/CD 툴입니다. Jenkins, GitLab CI 등 여러가지 툴들이 있지만 굳이 GitHub Action CI를 사용하는 이유는 Git과 직접 연동이 되기 때문에 workflow 작성 및 관리가 쉽고, 다양한 플러그인을 제공해줍니다.

 

🐾 GitHub Action CI 기본 문법

먼저 문법 알아보기 전에 GitHub가 Action을 인식할 수 있는 디렉토리부터 만들어봅시다.

위와 같이 프로젝트 최상단 패키지에서 .github 디렉토리를 생성하고 workflows/deploy.yml 파일을 추가합니다.

github가 처음부터 .github 디렉토리를 찾을 건데 workflows 디렉토리가 없으면 CI를 하지 않겠다는 의미가 되기 때문에 꼭 생성하세요!

GitHub Actions는 Event 기반으로 동작합니다. 우리가 GitHub에 push할 경우 push 이벤트가 발생합니다. GitHub는 이러한 이벤트로 우리가 어떤 일을 했는지 식별하는거죠. 또한 이벤트가 발생했을 때 동작할 사항을 스크립트 기반으로 작성합니다.(위 사진)

  • name : Workflow의 이름
  • jobs : job은 1개 이상의 job으로 구성
  • My-Job : job의 이름
  • steps : 특정 작업을 수행하는 가장 작은 단위
  • runs-on : 돌아갈 컴퓨터의 OS
  • - name : Step의 이름
  • run : 실행하고 싶은 명령어
  • ${{ secrets.MY_NAME }} : GitHub Secrets에 있는 비밀 키

(보충 설명이 필요하므로 더 공부 후에 추가 예정)


이상으로 CI/CD 기본 문법 설명을 마치겠습니다. 이해가 되지 않거나 모르겠는 부분 있으면 댓글로 남겨주세요! 제가 친절히 답변드릴께요 😊

728x90