CI/CD를 왜 배우는 걸까?
CI/CD는 테스트 / 통합 / 배포의 과정을 자동화하는 것을 의미
왜 배우는 걸까?
코드를 작성한 후 github에 올리기 위해 매번 commit을 하고,
ec2에 적용을 하기 위해 매번 git pull로 다운 받는 과정이 번거로움
→ 이러한 반복적인 과정을 자동화하기 위함
develop → commit → build → test → deploy
CI/CD 구축할 때 사용할 Github Actions
CI/CD를 구축할 때 사용할 툴
- Github Actionis
- 현업에서 많이 사용
- 무료 사용
- 빌드용 서버 따로 없음
- Jenkins
- 별도의 서버를 구축해야하는 단점 → 서버를 빌리는 비용 발생
- Circle CI
- Travis CI
- 등등
Github Actions를 활용한 전체적인 CI/CD 흐름
Github Actions란?
로직을 실행할 수 있는 일종의 컴퓨터
CI/CD 전체 흐름
(개발자) → 커밋 → (Github) → 실행 → (Github Actions) → 배포 → Amazon EC2
- 코드 작성 후 commit
- Github에 Push
- Push를 감지해서 Github Actions에 작성한 로직이 실행
- 빌드
- 테스트
- 서버로 배포
- 서버에서 배포한 최신 코드로 서버를 재실행
Github Actions 기본 문법 정리
- 프로젝트에 .github 폴더를 만들고 workflows 파일을 만듦
- 위치도 프로젝트의 최상단에 있어야 함
- workflows 안에 deploy.yml 파일을 만듦
- 아무한테 노출이 되면 안 되는 값을 사용하려면 settings에서 secret 값을 지정
- echo ${{ secrets.MY_NAME }}
- echo ${{ secrets.MY_HOBBY }}
- 아무한테 노출이 되면 안 되는 값을 사용하려면 settings에서 secret 값을 지정
- name: Github Actions 실행시켜보기 # Event: 실행되는 시점을 설정 # main이라는 브랜치에 push 될 때 아래 Workflow를 실행 on: push: branches: - main # 하나의 Workflow는 1개 이상의 job으로 구성 # 여러 job은 기본적으로 병렬적으로 수행 jobs: # job을 식별하기 위한 id My-Deploy-Job: # ubuntu 환경 / 가장 최신 버전 (운영체제를 고름) runs-on: ubuntu-latest # Step: 특정 작업을 수행하는 가장 작은 단위 # Job은 여러 Step들로 구성 steps: -name: Hello World 찍기 run: echo "Hello World" -name: 여러 명령어 문장 작성하기 run: | echo "Good" echo "Morning" -name: Gihub Actions 자체에 저장되어 있는 변수 사용해보기 run: | echo $GITHUB_SHA // 해당 커밋의 체크섬 값 echo $GITHIB_REPOSITORY // 깃허브 레포지터리명
- Github에 github-actions-practice 레포지터리 만들기
- 프로젝트에서 명령어 실행
- $ git init $ git add . $ git commit -m "first commit" $ git branch -M main $ git remote add origin "주소" $ git push -u origin main
- github <Actions>를 보면 뭔가가 생성되어 있음
- github actions가 올린 코드를 읽어서 로직을 생성시킨 것
'CICD' 카테고리의 다른 글
백엔드 CI/CD에 필요한 AWS 지식 (5) | 2024.10.08 |
---|