이 영역을 누르면 첫 페이지로 이동
천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

페이지 맨 위로 올라가기

천천히 꾸준히 조용히

천천히 꾸준히 조용히.. i3months 블로그

[Jenkins] Docker + Jenkins + SVN Pipeline 구축

  • 2023.03.21 16:40
  • DevOps/Jenkins
반응형

 

 

 

도커 컨테이너에 젠킨스를 띄워놓고 SVN과 연결해 파이프라인을 구축해보자.

 

 

 

1. 도커 작업

 

docker pull jenkins/jenkins:latest
docker container run -d -p 8092:8080 -v jenkins-data:var/jenkins_home —name jenkins-container jenkins/jenkins

 

젠킨스 이미지를 받아와서 컨테이너를 실행하자.

이 때 도커 볼륨을 추가해야 젠킨스 (컨테이너) 내부에서 플러그인들을 설치할 수 있고, 컨테이너를 삭제하더라도 데이터를 보존할 수 있다. 

 

 

 

 

2. 필요한 플러그인 설치

 

추천하는 플러그인은 모두 설치하고 추가로 SVN, pmd, maven 플러그인을 설치해주자.

 

 

 

 

3. SVN 계정 추가

 

연동할 SVN의 권한을 가진 계정을 추가해주자.

 

 

 

 

credentials를 검색해서 추가해도 좋고 새로운 item 추가에서 Freestyle project를 구성하면서 함께 추가해도 좋다.

 

 

 

 

4. 컨테이너 내부에 maven 설치

 

 

빌드 도구로는 maven을 사용한다. 컨테이너 내부에 maven을 설치해야 젠킨스가 빌드 작업을 수행할 수 있다.

 

docker exec —user=’root’ -it jenkins-container /bin/bash
apt-get update
apt-get install -y maven

 

관리자 권한으로 수행해야 설치할 수 있으니 CLI 환경에서 위의 명령어를 통해 설치를 진행하자.

이후 mvn --version을 통해 설치가 완료됐음을 확인할 수 있다.

 

 

 

 

5. Pipeline 구축

 

새로운 item -> pipeline 을 통해 새로운 파이프라인을 구축하자.

 

pipeline {
    agent any
    
    stages {
        stage('Checkout') {
            steps {
                checkout([$class: 'SubversionSCM',
                          locations: [[
                              credentialsId: '61qwe-2ccxz28-450f-a7b2-b98ae1308978',
                              remote: 'svn://..'
                          ]],
                          workspaceUpdater: [$class: 'UpdateUpdater']])
            }
        }
        
        stage('Build') {
            steps {
                dir('...') {
                    sh 'mvn clean install'   
                }
            }
        }
        
        stage('PMD') {
            steps {
                dir('...') {
                    sh 'mvn pmd:pmd'
                }
                // sh 'mvn pmd:pmd'
            }
        }
        
        stage('Unit Test') {
            steps {
                dir('...') {
                    sh 'mvn test'   
                }
                // sh 'mvn test'
            }
        }
    }
}

 

Pipeline script를 위와 같이 작성하자.

 

이전에 등록해 둔 아이디를 통해 svn에 접근하고, 해당 위치에 pom.xml 파일이 없으면 빌드할 수 없으니 dir을 사용해 pom.xml이 위치한 디렉토리를 지정해 줘야 한다. 

 

젠킨스의 트리거가 발동하면 빌드 - PMD - Unit Test 를 과정을 거치도록 설계했다. 

Pipeline script를 적절히 작성하면 main 브런치로 병합하거나 서버로 변경 내역을 다시 배포하는 등 여러 가지 추가 작업을 수행할 수 있다.

 

 

 

 

 

제대로 작성했다면 위와 같이 모든 테스트가 통과함을 확인할 수 있다.

 

svn에 커밋되거나 특정 시간에 도달함을 트리거로 설정하고 트리거 발동 시 어떤 작업을 수행할 지는 pipeline script로 적절하게 표현해 젠킨스를 활용하자.

 

 

반응형
저작자표시 (새창열림)

'DevOps > Jenkins' 카테고리의 다른 글

[Jenkins] Pipeline Script  (0) 2023.03.22
[Jenkins] CI와 젠킨스  (0) 2023.03.22
[Jenkins] SVN과 Jenkins 연결  (0) 2023.03.20

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Jenkins] Pipeline Script

    [Jenkins] Pipeline Script

    2023.03.22
  • [Jenkins] CI와 젠킨스

    [Jenkins] CI와 젠킨스

    2023.03.22
  • [Jenkins] SVN과 Jenkins 연결

    [Jenkins] SVN과 Jenkins 연결

    2023.03.20
다른 글 더 둘러보기

정보

천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

  • 천천히 꾸준히 조용히의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (664)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (142)
      • Machine Learning (38)
      • Operating System (18)
      • Computer Network (28)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
      • Compiler Design (11)
      • Computer Security (13)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • 💡 솔루션 (16)
    • 💬 기록 (10)
    • 📚 공부 (0)
    • 📝 낙서장 (25)

최근 글

나의 외부 링크

메뉴

  • 홈
반응형

정보

i3months의 천천히 꾸준히 조용히

천천히 꾸준히 조용히

i3months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © i3months.

티스토리툴바