🍎 들어가기 전
안녕하세요! 😊 오랜만에 포스팅하네요^^ 제가 해커톤을 하면서 느꼈던 건데 인프라는 정말 중요하다는 것입니다. 이런 인프라 구축을 할 줄 알아야 해커톤에서 사용하고(대비), 실제 운영 서버를 구축할 때도 도움이 많이 됩니다. 그런 의미에서 오늘은 제가 요즘에 푹 빠져서 공부하고 있는 GitHub Actions CI에 관한 기본 문법에 대해서 같이 알아보는 시간을 가질거에요! (오랜만에 글 작성하려니까 떨리네요..)
🤔 CI / CD란?
CI(Continuous Integration)는 지속적인 통합, CD(Continuous Deployment)는 지속적인 배포라는 의미를 가지고 있습니다.
CI는 빌드 -> 테스트 -> 병합하는 과정이고 CD는 자동 배포를 말합니다.
근데 왜 CI랑 CD를 따로 분리하지 않고 말하느냐! 그건 CI를 거쳐서 CD가 동작하기 때문에 따로 말하지 않고 CI/CD라고 부릅니다.
아래와 같이 생각하면 쉬워요!(아닌가?ㅋㅋ)
- 개발자가 어떤 브랜치에 merge하거나 push하면 GitHub Actions가 실행
- 빌드 -> 테스트 -> 병합 순으로 동작
- 병합이 완료되면 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 기본 문법 설명을 마치겠습니다. 이해가 되지 않거나 모르겠는 부분 있으면 댓글로 남겨주세요! 제가 친절히 답변드릴께요 😊
'🐳 DevOps' 카테고리의 다른 글
[CI/CD] CI/CD 파이프라인 구축 (0) | 2025.04.27 |
---|---|
[인프라] EB(Elastic Beanstalk) 개념 및 생성 실습 (실습 위주) (2) | 2025.04.26 |
[인프라] AWS IAM(Identity and Access Management)이란? (0) | 2025.04.25 |
[인프라] AWS VPC 생성 실습 (0) | 2025.04.23 |
[인프라] AWS VPC 관련 개념 정리 (0) | 2025.04.23 |