본문 바로가기
CICD

CI/CD 기본 개념, Github Actions 기본 개념

by shinminkyoung 2024. 10. 8.

CI/CD를 왜 배우는 걸까?

CI/CD는 테스트 / 통합 / 배포의 과정을 자동화하는 것을 의미

왜 배우는 걸까?

코드를 작성한 후 github에 올리기 위해 매번 commit을 하고,

ec2에 적용을 하기 위해 매번 git pull로 다운 받는 과정이 번거로움

→ 이러한 반복적인 과정을 자동화하기 위함

develop → commit → build → test → deploy

CI/CD 구축할 때 사용할 Github Actions

CI/CD를 구축할 때 사용할 툴

  1. Github Actionis
    1. 현업에서 많이 사용
    2. 무료 사용
    3. 빌드용 서버 따로 없음
  2. Jenkins
    1. 별도의 서버를 구축해야하는 단점 → 서버를 빌리는 비용 발생
  3. Circle CI
  4. Travis CI
  5. 등등

Github Actions를 활용한 전체적인 CI/CD 흐름

Github Actions란?

로직을 실행할 수 있는 일종의 컴퓨터

CI/CD 전체 흐름

(개발자) → 커밋 → (Github) → 실행 → (Github Actions) → 배포 → Amazon EC2

  1. 코드 작성 후 commit
  2. Github에 Push
  3. Push를 감지해서 Github Actions에 작성한 로직이 실행
    1. 빌드
    2. 테스트
    3. 서버로 배포
    (Github Actions가 로직을 실행할 수 있는 컴퓨터이기에 가능함)
  4. 서버에서 배포한 최신 코드로 서버를 재실행

Github Actions 기본 문법 정리

  1. 프로젝트에 .github 폴더를 만들고 workflows 파일을 만듦
    • 위치도 프로젝트의 최상단에 있어야 함
  2. workflows 안에 deploy.yml 파일을 만듦
    • 아무한테 노출이 되면 안 되는 값을 사용하려면 settings에서 secret 값을 지정
      • echo ${{ secrets.MY_NAME }}
      • echo ${{ secrets.MY_HOBBY }}
  3. 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 // 깃허브 레포지터리명
  4. Github에 github-actions-practice 레포지터리 만들기
  5. 프로젝트에서 명령어 실행
  6. $ git init $ git add . $ git commit -m "first commit" $ git branch -M main $ git remote add origin "주소" $ git push -u origin main
  7. github <Actions>를 보면 뭔가가 생성되어 있음
    • github actions가 올린 코드를 읽어서 로직을 생성시킨 것

'CICD' 카테고리의 다른 글

백엔드 CI/CD에 필요한 AWS 지식  (5) 2024.10.08