[CI/CD] Github Actions로 CI/CD 파이프라인 구축하기

minjeongs·2024년 5월 29일
0

트러블슈팅

목록 보기
4/6
post-thumbnail

😊 이전 글 - CI/CD 궁금하면 500원에 이어지는 글

4. GitHub Actions

  • 주요 용어
    • workflow

    • job

    • step

    • action

      workflow(파일) > job(작업 단위) > step(작업 순서) > action(다른 사람이 만든 작업)

  • workflow
    • 작업 흐름, 자동화 하기 위한 작업 과정을 파일로 만들어 놓은 것
    • 코드 저장소 내에서 .github/workflows 폴더 아래에 위치한 YAML 파일로 설정
      • 하나의 코드 저장소에는 여러 개의 워크플로우, 즉 여러 개의 YAML 파일을 생성할 수 있음
    • 예제
      # .github/workflows/example.yml
      on:
        push:
          branches:
            - main
      
      jobs:
        # ...(생략)...
  • job
    • 워크 플로우가 구체적으로 어떤 일을 해야하는지 명시함
    • 작업(job), 독립된 가상 머신(machine) 또는 컨테이너(container)에서 돌아가는 하나의 처리 단위를 의미
    • 하나의 워크플로우는 여러 개의 작업으로 구성되며 적어도 하나의 작업은 있어야 함
    • 각 job은 기본적으로 병렬로 실행됨
    • 예제
      # .github/workflows/example.yml
      
      # ...(생략)...
      jobs:
        job1:
          # job1에 대한 세부 내용
        job2:
          # job2에 대한 세부 내용
        job3:
          # job3에 대한 세부 내용
  • step
    • 작업 순서 정의

      • GitHub Actions에서는 각 작업(job)이 하나 이상의 단계(step)로 모델링이 됨
    • 작업 단계는 단순한 커맨드(command)스크립트(script)가 될 수도 있고 액션(action)이라는 좀 더 복잡한 명령일 수도 있음

    • 예제

      # ...(생략)...
      
      jobs:
        test:
          runs-on: ubuntu-latest
          steps:
            - uses: actions/checkout@v3
            - run: npm install
            - run: npm test

  • action
    • GitHub Acitons에서 빈번하게 필요한 반복 단계를 재사용하기 용이하도록 제공되는 일종의 작업 공유 메커니즘
    • GitHub Marketplace에서 수 많은 사용자들이 공개한 다양한 액션을 쉽게 접할 수 있음

5. OOT BE 기술스택

  • NCP
  • Java
  • Spring Boot (gradle)
  • GitHub Actions

6. 과정

6.1 Container Registry, Object Storage 생성

  • Container Registry: 도커 컨테이너 이미지를 저장할 수 있는 Docker Hub와 같은 개념
  • Container Registry를 사용하기 위해서는 프라이빗 도커 컨테이너 이미지를 저장하기 위한 Object Storage(AWS의 S3 같은 개념)를 먼저 생성해야 함
  • Object Storage의 버킷에 Docker 컨테이너 이미지가 저장되고 레지스트리로 이미지를 pull, push가 가능함

6.2 Docker 환경 파일 설정

6.3 CI 프로세스 코드 (PR 시 Test 진행)

  1. Compare branch 코드 내려 받기
  2. Java 환경 설정
  3. Spring 환경 변수 설정
  4. 테스트를 위한 MySQL 설정
  5. 테스트를 위한 Build 실행 설정
  6. Docker 이미지 build 및 push 설정

6.4 CD 프로세스 코드 (Merge 시 배포 진행)

  1. develop branch 코드 내려 받기
  2. Java 환경 설정
  3. Docker 이미지 pull 후 docker-compose를 통한 실행

Actions Secret 설정

  • ENVIRONMENT

  • DOCKER_USERNAME

  • DOCKER_PASSWORD

  • SERVER_HOST

  • SERVER_SSH_PORT

  • SERVER_USERNAME

  • SERVER_PASSWORD

NCP container registry에 로그인

  • registry : Public Endpoint(Container Registry페이지에서 확인가능)
  • username : access key ID(계정관리의 인증키 관리에서 확인)
  • password : secret key(계정관리의 인증키 관리에서 확인)

참고 자료

CI/CD

Spring + Docker + GitHub Actions를 통한 CI/CD 파이프라인 구축

Github Actions CI-CD구축(NCP, Docker, SpringBoot)

Docker + Github Actions로 SpringBoot CI/CD 구축하기

profile
나 민정쓰 코딩하는디

0개의 댓글

관련 채용 정보