Gom3rye

Jenkins 본문

현대 오토에버 클라우드 스쿨

Jenkins

Gom3rye 2025. 7. 18. 17:48
728x90
반응형

샘플 프로젝트 생성

  • item 이름 설정 > free style project > okay
  • Build Steps 항목에서 Execute Shell 선택 > echo “Welcome to my first project using Jenkins.” 내용 작성 > 저장
  • 지금 빌드를 눌러서 실행 > 결과는 빌드 성공한 항목을 클릭해서 확인 가능
  • 실제 샘플 프로젝트의 위치 확인
    • docker exec -it jenkins-server bash
    • cd /var/jenkins_home/workspace
    • ls 하면 drwxr-xr-x 2 jenkins jenkins 4096 Jul 18 00:26 'Hello World’ 나온다.
    • cd ‘Hello World’

Jenkins Architecture

Master & Agent

  • Jenkins를 운영하다 보면 예상보다 빠르게 과부하 현상이 나타나는 경우가 있는데 커밋을 자주 하는 팀에서 발생한다.
  • 현재 Jenkins를 실행하고 있는 Master와 작업을 수해하는 Agent로 나누어서 실행하는 방식을 사용한다.

Jenkins CI/CD

Git 사용 설정

  • git 플러그인이 설치되어야 한다.
  • jenkins 관리 > Plugins > Installed Plugins 에서 확인, 없으면 설치
  • git 관련 설정: jenkins 관리 > Tools > Git
  • git 설치 확인
    • docker exec -it jenkins-server bash

Gradle Project 생성 및 실행

  • Gradle Project 생성 (Spring Boot 프로젝트 생성)
  • 기본 패키지에 클래스를 추가하고 작성
@Service
public class CalculatorService {
    int sum(int a, int b){
        return a+b;
    }
}
  • 기본 패키지에 컨트롤러 클래스를 추가하고 작성
@RestController
public class CalculatorController {
    @Autowired
    private CalculatorService service;

    @RequestMapping("/sum")
    public String sum(@RequestParam("a") Integer a, @RequestParam("b") Integer b){
        return String.valueOf(service.sum(a,b));
    }
}
  • 포트 변경: application.properties 파일에 작성
    • server.port=9000
      • 자바로 만든 프로젝트들은 대부분 톰켓 쓰는데 그 포트가 8080이고 우리는 이미 Jenkins로 8080 쓰고 있으니까
  • 프로젝트 컴파일: ./gradlew compilejava
  • 프로젝트 빌드: ./gradlew build
  • 프로젝트 실행: ./gradlew bootRun
  • 프로젝트 패키징: ./gradlew jar
  • github에 푸시하고 https://github.com/Gom3rye/calculator.git jenkins 프로젝트 만들기

Jenkins 작업

  • Freestyle Project 만들기
  • 소스 코드 관리에서 Git을 선택하고 Repository URL을 입력
  • Build Step에서 Add build step > Execute shell
chmod +x ./gradlew
./gradlew compileJava
./gradlew clean build
  • 빌드를 해서 에러가 없는지 확인

Maven Project 빌드

  • Business logic을 구현할 때는 Template Method Pattern을 사용한다. 고객은 Interface만 보고 개발자가 Interface로 template을 작성하고 Class로 구현한다.
git init
git add .
git commit -m "maven project"
git remote add origin <https://github.com/Gom3rye/springmaven.git>
git push origin main
  • Jenkins에 Maven 플러그인을 설치하고 tool 메뉴에서 maven을 찾아서 버전을 설정해준다.
  • Jenkins에서 Maven Project를 생성해서 설정

Git hub WebHook을 이용한 업데이트

Git Hub에서 Access Token 발급

  • workflow, admin:repo_hook 체크하기
  • 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

Jenkins에서 git hub server 설정

  • jenkins 관리 메뉴에서 system으로 가서 설정
  • credential을 추가하는데 Kind를 Secret.txt로 선택하고 ID(깃헙 id)를 설정하고 Secret에 Access Token을 입력한다.

Jenkins의 Item에서 Triggers에서 GitHub hook trigger for GITScm polling 을 체크한다. (프로젝트/Configuration)

pipeline

pipeline 시각화 플러그인 설치: Delivery Pipeline

  • 프로젝트 작성 방법
    • Declarative
    • Scripted
      • Scripted는 특정 Stage만 실행 가능하다.
      • Scripted는 제어문 사용 가능하다.
      • Scripted는 pipeline으로 시작하고 Declarative 방식은 node로 시작한다.

Declarative 방식으로 pipeline item을 생성

pipeline script 작성

node{
    stage("Ready"){
        sh "echo 'Ready'"
    }
    stage("Build"){
        sh "echo 'Build Jar'"
    }
    stage("Deploy"){
        sh "echo 'Deploy EC2'"
        sh "echo 'Deploy AWS'" # stage안에 명령어 여러 개 넣어도 된다.
    }
}

Scripted 방식으로 pipeline item을 생성

pipeline script 작성

pipeline{
    agent any # 모든 agent에서
    
    stages{
        stage('Compile'){
            steps{
                echo "Compile"
            }
        }
        stage('JUnit'){
            steps{
                echo "JUnit Test"
            }
        }
        stage('Code Analysis'){
            steps{
                echo "코드 정적 분석"
            }
        }
        stage('Deploy'){
            steps{
                echo "Deploy1"
            }
        }
    }
}

⇒ stage안에 steps 여러 개 만들어도 되고 명령어를 여러 개 만들어도 되지만 그러면 따로 설정을 또 해줘야 한다.

728x90
반응형

'현대 오토에버 클라우드 스쿨' 카테고리의 다른 글

Kubernetes Service, AWS EC2  (4) 2025.07.22
AWS  (1) 2025.07.21
Git Hub Action & Jenkins  (5) 2025.07.17
Git 협업  (2) 2025.07.16
Git  (0) 2025.07.15