GithubActions 이용하여 CI 구축하기

Sun choi·2024년 10월 17일

NEW 지식

목록 보기
26/34

실속
CI구축하는 법!
처음엔 막막하고 생소한 것 말고는 엄청 어렵진 않다.. 아닌가?

우선,

CI/CD에서 CI란!

test를 통과한 코드만 deve 브랜치와 main 브랜치에 merge되도록 하여 오류를 방지하고 안정적인 코드가 배포되고 버그를 빠르게 발견하도록 하는 것!

해당 인텔리제이 파일을 도커 이미지로 만드는 순서

  1. jar파일 준비
  2. Dockerfile 작성
  3. Docker image 만들기
  4. 인텔리제이의 Docker에 Docker image 배포

이 4단계는 도커 이미지 만드는 방법이다.
만들면 Services 에서 볼 수 있고, 그 이미지의 컨테이너를 만들어 실행시킬 수 있다.


Github Actions 스크립트 파일 작성

.github/workflows 폴더 안에 yml 파일을 만들어준다. 인텔리제이에서 해도되고 깃허브에서 해도된다.
내가 작성한 스크립트이다.

# Actions 이름 github 페이지에서 볼 수 있다.
name: Run Test

# Event Trigger 특정 액션 (Push, Pull_Request)등이 명시한 Branch에서 일어나면 동작을 수행한다.
on: 
    push:
        # 배열로 여러 브랜치를 넣을 수 있다.
        branches: [ main, dev, feat/* ]
    # github pull request 생성시
    pull_request:
        branches: 
            - dev # -로 여러 브랜치를 명시하는 것도 가능

    # 실제 어떤 작업을 실행할지에 대한 명시
jobs:
  build:
  # 스크립트 실행 환경 (OS)
  # 배열로 선언시 개수 만큼 반복해서 실행한다. ( 예제 : 1번 실행)
    runs-on: [ ubuntu-latest ] 

    # 실제 실행 스크립트
    steps: 
      # uses는 github actions에서 제공하는 플러그인을 실행.(git checkout 실행)
      - name: checkout
        uses: actions/checkout@v4

      # with은 plugin 파라미터 입니다. (java 17버전 셋업)
      - name: java setup
        uses: actions/setup-java@v2
        with:
          distribution: 'adopt' # See 'Supported distributions' for available options
          java-version: '17'

      - name: make executable gradlew
        run: chmod +x ./gradlew

      # run은 사용자 지정 스크립트 실행 Gradle을 clean 하고 test 하겠다
      - name: run unittest
        run: |
          ./gradlew clean test

      # 도커허브에 로그인
      - name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      # 도커 이미지 업로드
      - name: Upload Docker Image
        uses: docker/build-push-action@v2
        with:
          context: .
          file: ./Dockerfile
          push: true
          tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.SERVICE }}:latest

이런 식으로 작성을 완료했으면

Github의 Secret Key에 중요한 정보들을 저장

Github 레포지토리로 이동해서 Settings -> Secrets and variables -> actions -> New repository secret 에 들어가서

DOCKERHUB_USERNAME: 도커허브 사용자 이름
DOCKERHUB_TOKEN: 도커허브 액세스 토큰 (비밀번호가 아닌 토큰을 사용)

을 넣어주면 되는데 DOCKERHUB_TOKEN은 도커허브에 로그인한 후, 우측 상단의 Account Settings로 이동.
Security 탭에서 Access Tokens 섹션으로 가서 새 토큰을 생성하고
생성된 토큰을 복사한 후, 위에서 설명한 GitHub 시크릿에 추가하면 된다.

여기까지 하면 해당 Repository 의 Actions에서 머지하거나 Pull Request하면 이 워크플로우가 자동으로 돌아가며 정상동작할 시 도커 이미지가 도커허브에 업로드된다.

보이듯이 현재는 테스트코드를 수정해야하여 전부 실패..(수정필요함)
하지만 GithubActions가 잘 동작하는것을 볼 수 있다.


스프링(Spring boot) 프로젝트에서 도커로 배포하여 실행하는것

Github Actions과 Docker을 활용한 CI/CD 구축

[CI] Github Action으로 Docker hub에 이미지 업로드

이 세개의 포스팅을 완전히 참고하여 구축했습니다.

profile
풀스택 개발자의 공부기록 📖

0개의 댓글