개발환경 컨테이너로 자동빌드 Pipeline

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

Jenkins Build Pipeline

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

Sample

빌드 파이프 라인 샘플입니다.

pipeline {
    agent any
    stages {
        stage('[CLONE] yolo-tensorrt') {
            steps {
                sh 'rm -rf *'
                git branch: 'main', credentialsId: '크리덴셜ID', url : '저장소주소.git'
            }
        }
        stage('[BUILD] 저장소명') {
            agent {
                docker { 
                    image '도커이미지:태그'
                    args '-v /var/jenkins_home:/data'
                    reuseNode true
                }
            }
            steps {
                sh '. ~/.profile; mkdir -p build; cd build; cmake ..; make; cp libdetector.so /data'
            }
        }

        stage('[CLONE] 저장소명') {
            steps {
                sh 'rm -rf *'
                git branch: 'main', credentialsId: '<크리덴셜ID>', url : 'http://레포주소.git'
            }
        }
        stage('[BUILD] 저장소명') {
            agent {
                docker { 
                    image '도커이미지:태그'
                    args '-v /var/jenkins_home:/data'
                    reuseNode true
                }
            }
            steps {
                sh 'cp /data/libdetector.so ./extern-lib; mkdir -p build; cd build; cmake ..; make; cp 폴더명 /src'
            }
        }

        stage('[ULOAD]') {
            steps {
                sh 'ls /var/jenkins_home'
                sh 'mkdir 업로드할_폴더명'
                sh 'cp $PWD/build/폴더명 ./업로드할_폴더명1'
                sh 'ls -al'
                sh 'sshpass -p 비번 scp  -r -o StrictHostKeyChecking=no ./업로드할_폴더명 계정@아이피:/volume1/SW2/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})")
        }
    }
}
profile
늘 성장을 꿈꾸는 자들을 위한 블로그입니다.

0개의 댓글