CI CD InfraStructure/Jenkins

[Jenkins] Slave Node에서 빌드 - Pipeline 적용 (Third)

유혁스쿨 2023. 7. 12. 15:41
728x90
반응형

jenkins-node1 Docker 서버 추가 및 실행

> docker run --privileged --name jenkins-node2 -itd -p 40022:22 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host edowon0623/docker:latest /usr/sbin/init
> ssh root@localhost -p 40022

 

기동된 서버 ip Address 확인하기!

 

ncurses git / JDK 설치

# yum install -y ncurses git
# yum list java*jdk-devel
# yum install -y java-11-openjdk-devel.x86_64

 

 

Master 서버에 Node2 Keygen 복사하기 (이 설정을 해야 Jenkins에서도 Master에서 Node2에 접속이 가능해진다.)

[복사하기]
ssh-copy-id root@172.17.0.5

[연결 동의하기]
yes

[패스워드 입력]
P로시작하는 패스워드 입력

 

 

Node 추가하기

: https://u-it.tistory.com/entry/Jenkins-Multi-nodes-%EA%B5%AC%EC%84%B1-MasterSlave

  • Node Name : slave2
  • Description : Add a server as the second slave machine
  • Number of executors: 2
  • remote root directory : /root/slave2
  • Labels: slave2
  • Usage: User this node as much as possible
  • launch method : Launch agent via SSH
    • Host : 슬레이브 서버 IP주소 등록
    • Port : 22
    • Credentials : 이전에 추가한 크레덴셜 root/password 선택

 

 

Remote root Directory를 /root/slave2로 수정한 후 Node2 서버에서 해당 디렉토리 경로를 생성해준다.

 

나머지 정보 입력

 

Nodes가 정상적으로 추가되었다.

 


Pipeline 설정 (Third Pipeline 수정)

 

기존 Pipeline Script를 수정한다.

아래 코드를 추가한다.

    agent {
        label 'slave1'
    }

agent any와 SonarQube는 임시 주석처리한다.

 

pipeline{
    //  agent any
    agent {
        label 'slave1'
    }
     tools {
         maven 'Maven3.8.5'
     }
     stages{
         stage('github clone') {
             steps {
                git branch: 'main', url: 'https://github.com/YooHyeok/docker_jenkins_deploy_project_example'
             }
         }
         
         stage('build') {
             steps {
                 sh '''
                    echo build start
                    mvn clean compile package -DscipTests=true
                 '''
             }
         }
         
        //  stage('SonarQube analysis') {
        //      steps {
        //          withSonarQubeEnv('SonarQube-server') {
        //              sh 'mvn sonar:sonar'
        //          }
        //      }
        //  }
         
        //  stage('deploy') {
        //     steps {
        //         deploy adapters: [tomcat9(credentialsId: 'deployer_user', path: '', url: 'http://192.168.0.31:8080')], contextPath: null, war: '**/*.war' 
        //     }   
        //  }
         
        //  stage('ssh publisher') {
        //      steps {
        //         sshPublisher(publishers: [sshPublisherDesc(configName: 'docker-server', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'docker build --tag=maerong/ssibal -f Dockerfile .', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '.', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/*.war')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
        //      }
        //  }
     }
}

 

 

slave2로 빌드해보기

    agent {
        label 'slave2'
    }

좌 slave1 / 우 save2

 

728x90
반응형