이 영역을 누르면 첫 페이지로 이동
시간의화살 블로그의 첫 페이지로 이동

시간의화살

페이지 맨 위로 올라가기

시간의화살

행복하세요

[Jenkins] Pipeline Script

  • 2023.03.22 17:17
  • DevOps/Jenkins

 

 

 

node {
    def mvnHome
    stage('Preparation') { // for display purposes
        // Get some code from a GitHub repository
        git 'https://github.com/jglick/simple-maven-project-with-tests.git'
        // Get the Maven tool.
        // ** NOTE: This 'M3' Maven tool must be configured
        // **       in the global configuration.
        mvnHome = tool 'M3'
    }
    stage('Build') {
        // Run the maven build
        withEnv(["MVN_HOME=$mvnHome"]) {
            if (isUnix()) {
                sh '"$MVN_HOME/bin/mvn" -Dmaven.test.failure.ignore clean package'
            } else {
                bat(/"%MVN_HOME%\bin\mvn" -Dmaven.test.failure.ignore clean package/)
            }
        }
    }
    stage('Results') {
        junit '**/target/surefire-reports/TEST-*.xml'
        archiveArtifacts 'target/*.jar'
    }
}

 

 

 

node : 빌드 에이전트를 효율적으로 사용하기 위해 필요하다. 빌드 스크립트가 실행될 노드를 명시적으로 지정한다.

node 대신 pipeline { agent any } 를 사용하면 사용 가능한 모든 빌드 에이전트 중 사용 가능한 것을 알아서 선택하도록 할 수 있다.

 

stage : 하나의 작업 단위이다. stage를 한 단위로 테스트나 사용자가 지정한 작업이 이루어진다.

 

step : 스테이지 내부에서 실행되는 작업을 의미한다. 

 

 

 

node('docker') {

    stages {

        stage('Checkout') {
            steps {
                checkout([$class: 'SubversionSCM',
                          locations: [[
                              credentialsId: '6179a7d39e-2c3228-450f-a7b2-b98ae1308978',
                              remote: '...'
                          ]],
                          workspaceUpdater: [$class: 'UpdateUpdater']])
            }
        }

        stage('Build & Unit Test') {
            dir('/...') {
                    sh 'mvn clean verify -DskipITs=true'   
                    junit '**/target/surefire-reports/TEST-*.xml'
                    archive 'target/*.tar'
            }
        }

        stage('PMD') {
            steps {
                dir('/...') {
                    sh 'mvn pmd:pmd'
                }
            }
        }
        
        triggers {
                cron('*/1 * * * *')
            }
        
        
    }
}

 

 

 

젠킨스 트리거가 발동되면 docker 노드가 일련을 작업을 처리한다. (젠킨스 슬레이브를 활용하려면 도커를 사용하는 편이 좋다)

cron으로 트리거를 설정 시 SCM에 변화가 없어도 특정 시간에 빌드를 수행하고, pollSCM으로 설정 시 SCM에 변화가 있을 때만 빌드르 수행한다.

 

 

maven으로 빌드를 진행하기에 pom.xml이 있는 위치에서 maven 관련 명령어를 수행하도록 설계해야 한다.

 

 

이후 추가 설정을 통해 모든 브랜치에서 CI 작업을 수행할 수 있도록 멀티브랜치 파이프라인을 구축하거나, 테스트에 소나큐브 플러그인을 사용해 정적 소스코드 분석 작업을 추가하는 등 다양한 작업을 추가할 수 있다.

 

파이프라인에 배포 작업까지 추가하게 되면 Continuous Deployment까지 구현할 수 있다. (노드를 다르게 설정하는 방식을 사용할 수 있다)

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

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

[Jenkins] CI와 젠킨스  (0) 2023.03.22
[Jenkins] Docker + Jenkins + SVN Pipeline 구축  (0) 2023.03.21
[Jenkins] SVN과 Jenkins 연결  (0) 2023.03.20

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Jenkins] CI와 젠킨스

    [Jenkins] CI와 젠킨스

    2023.03.22
  • [Jenkins] Docker + Jenkins + SVN Pipeline 구축

    [Jenkins] Docker + Jenkins + SVN Pipeline 구축

    2023.03.21
  • [Jenkins] SVN과 Jenkins 연결

    [Jenkins] SVN과 Jenkins 연결

    2023.03.20
다른 글 더 둘러보기

정보

시간의화살 블로그의 첫 페이지로 이동

시간의화살

  • 시간의화살의 첫 페이지로 이동

검색

방문자

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

카테고리

  • 분류 전체보기 (607)
    • 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)
      • Java (19)
      • JavaScript (15)
      • C (25)
      • C++ (12)
      • Python (1)
      • PHP (2)
    • Computer Science (69)
      • Operating System (18)
      • Computer Network (17)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Github Actions (0)
      • Amazon Web Service (8)
    • Machine Learning (28)
      • AI Introduction (28)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • Solutions (14)
    • Life Logs (0)
    • 낙서장 (25)

최근 글

나의 외부 링크

메뉴

  • 홈

정보

13months의 시간의화살

시간의화살

13months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

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

티스토리툴바