CI/CD 도구는 소프트웨어 개발 프로세스에서 지속적인 통합과 지속적인 배포/전개를 자동화하여 개발자의 생산성을 톺이고, 배포 품질을 향상시키는데 도움을 줍니다. 대표적인 도구로 Jenkins와 Github Actions가 있다.
GitHub Actions는 소규모 또는 오픈소스 프로젝트의 경우 무료 플랜이 꽤 유리합니다.
Jenkins는 호스팅 시 서버 운영 비용이 발생할 수 있지만, 플러그인이나 기능 면에서 비용보다 효율적일 수 있습니다.
유지보수 요구사항 : 만약 유지보수나 업데이트에 신경 쓰기 부담된다면 클라우드 기반 서비스가 편합니다.
취준 및 신입 Java/Spring 백엔드 개발자로서 CI/CD 개념을 체험하고 실습할 수 있는 몇 가지 아이디어를 소개할게요. 실제 프로젝트 환경에서 경험을 쌓으면서 CI/CD 도구 사용법을 익히는 것은 면접 준비 및 실무에서 큰 도움이 됩니다.
프로젝트 생성:
Spring Initializr(https://start.spring.io/)를 활용하여 간단한 Spring Boot 애플리케이션을 생성합니다. (예: REST API 혹은 간단한 CRUD 애플리케이션)
빌드 도구 선택:
Maven 또는 Gradle 중 하나를 선택하여 빌드 스크립트를 구성합니다.
GitHub 저장소에 올리기:
GitHub에 새로운 저장소를 생성하고 로컬 프로젝트를 push 합니다.
워크플로우 YAML 파일 작성:
.github/workflows/ci.yml 파일을 생성하고, 해당 파일 안에 빌드, 테스트, 패키징 단계를 정의합니다. 예를 들어 Maven을 사용하는 경우:
name: Java CI with Maven
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '11'
- name: Build with Maven
run: mvn clean install
테스트:
코드 수정 후 push 및 PR 작업을 통해 GitHub Actions가 정상적으로 빌드, 테스트, 패키징 프로세스를 실행하는지 확인해보세요.
Dockerfile 작성:
Spring Boot 애플리케이션을 Docker 이미지로 빌드하기 위한 Dockerfile을 작성합니다.
FROM openjdk:11-jre-slim
COPY target/*.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
GitHub Actions 워크플로우 확장:
위의 CI 워크플로우에 Docker 이미지 빌드를 위한 단계를 추가할 수 있습니다.
- name: Build Docker image
run: |
docker build -t my-spring-app:${{ github.sha }} .
로컬 테스트:
GitHub Actions 결과와 별개로, 로컬에서 docker build 및 docker run 명령어를 실행해 이미지가 잘 실행되는지 테스트해보세요.
Jenkins 실습은 다소 인프라 관리가 필요하기 때문에 아래와 같이 단계별 실습을 추천합니다.
docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts파이프라인 구성:
Jenkins의 “Pipeline” 기능을 사용하여 Jenkinsfile을 작성합니다. 예를 들어, GitHub에 있는 Spring Boot 프로젝트를 빌드하는 파이프라인:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git url: 'https://github.com/your-username/your-spring-app.git', branch: 'main'
}
}
stage('Build') {
steps {
sh 'mvn clean install'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
}
}
}
실행 및 결과 확인:
Jenkins 웹 UI에 접속하여 파이프라인을 실행하고, 빌드와 테스트 단계가 성공하는지 확인해보세요.
테스트 자동화:
단위 테스트, 통합 테스트 자동화 워크플로우를 추가하여 코드 변경시 자동으로 테스트가 돌도록 해보세요.
알림 설정:
빌드 실패 시 이메일 혹은 Slack 알림을 설정해서 CI/CD 파이프라인과 개발 환경 사이의 연동을 경험해볼 수 있습니다.
환경 분리:
staging 및 production 환경으로 배포하는 과정을 간단하게 실습해보고, GitHub Actions나 Jenkins에서 멀티 스테이지 파이프라인을 구현해보세요.
이러한 실습 과정은 취업 준비 및 실제 개발 환경에서 CI/CD 프로세스를 이해하는 데 큰 도움이 됩니다. 처음에는 GitHub Actions와 같은 간단한 도구로 시작하고, 점차 Jenkins와 같은 더 복잡한 도구도 경험해 보면서 CI/CD 자동화의 전체 흐름을 익혀보세요.