실속
CI구축하는 법!
처음엔 막막하고 생소한 것 말고는 엄청 어렵진 않다.. 아닌가?
우선,
test를 통과한 코드만 deve 브랜치와 main 브랜치에 merge되도록 하여 오류를 방지하고 안정적인 코드가 배포되고 버그를 빠르게 발견하도록 하는 것!
이 4단계는 도커 이미지 만드는 방법이다.
만들면 Services 에서 볼 수 있고, 그 이미지의 컨테이너를 만들어 실행시킬 수 있다.
.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 레포지토리로 이동해서 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에 이미지 업로드
이 세개의 포스팅을 완전히 참고하여 구축했습니다.