Jenkins pipeline을 통해 docker 이미지 개발환경 위에서 소스 빌드하기

마이클의 AI 연구소·2022년 9월 16일
0
post-thumbnail

Jenkins Build Pipeline

젠킨스 파이프 라인이란 연속적인 작업들을 젠킨스에서 하나의 파이프라인(작업)으로 묶어서 관리할 수 있게 만드는 플러그인을 말합니다.

저희 개발팀은 docker 이미지로 개발환경을 구축해놓고 사용하고 있으므로 jenkins에서 docker 컨테이너를 띄우고 그 내부에서 빌드 스크립트를 실행해야 합니다.

관련 자료들이 많지 않아 직접 여러 자료들을 조합해서 성공하여 내용을 기록합니다.

Pipeline Sample

pipeline {
    agent any
    stages {
        stage('[CLONE] src') {
            steps {
                sh 'rm -rf *'
                git branch: 'main', credentialsId: '{설정된Credential-Id입력}', url : 'http://{깃주소입력}.git'
            }
        }
        stage('[BUILD] src') {
            agent {
                docker { 
                    image '{레지스트리접속정보}/{컨테이너명}:{태그}'
                    args '-v /var/jenkins_home:/data'
                    reuseNode true
                }
            }
            steps {
                sh '. ~/.profile; mkdir -p build; cd build; cmake ..; make'
            }
        }
        
        stage('[ULOAD]') {
            steps {
                sh 'sshpass -p {NAS패스워드} scp  -r -o StrictHostKeyChecking=no {컴파일된 파일명} {UserID}@{NAS접속정보}:/volume1/BuildModules'
            }
        }
    }
    post {
        success {
            slackSend (channel: '#build', color: '#00FF00', message: ":tada: Build Succeeded: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
        }
        failure {
            slackSend (channel: '#build', color: '#FF0000', message: ":cold_sweat: Build Failed: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
        }
    }
}
  • 첫번째 스테이지에서는 src를 clone해 옵니다.
  • 두번째 스테이지에서는 docker container를 띄우고 내부에서 빌드작업을 실행합니다.
  • 세번째 스테이지에서는 NAS의 특정 폴더에 실행모듈을 복사합니다.
profile
늘 성장을 꿈꾸는 자들을 위한 블로그입니다.

0개의 댓글

관련 채용 정보