티스토리 뷰

반응형

젠킨스 설치는 아무거나 봐도 상관 없음

젠킨스, 빌드용 서버 따로 만들었기 때문에 필요한 msbuildtool과 windows sdk설치

 

msbuild, svn

젠킨스 관리  > plugin 에서 msbuild, svn 설치

젠킨스 관리 > tool > 중간에 msbuild installations에 정보 입력

 

jenkins home에서 새로운 item > free style

소스 코드 관리에 svn 체크 > 빌드할 snv repo 경로, credential은 add해서 추가 후 선택 > build steps에 build vs ~~ with msbuild 선택 > msbuild version 선택, MSBuild Build File은 해당 프로젝트의 sln파일의 경로, command argument는 /p:Configuration=Release /p:Platform=x86 와 같이 입력

 

이후 빌드하면 됨

 

근데 이제 솔루션 내에 lib repo가 없어서 빌드가 안 됨, 이걸 프로그램 마다 소스코드 관리에 하나씩 추가할 생각하니까 벌써 숨막힘

-> Global Pipeline Libraries에 추가하면 됨

 

근데 이건 free style에서 못 쓰고, pipeline으로 생성한 것에서만 사용 되는듯?

-> pipeline script가 좀 부담임

 

240209freestyle item은 사용하지 않고 pipeline만 사용중

 

이러니 plugin에서 msbuild도 필요 없고, 그냥 batch로 msbuild 실행함

 

공통 lib들이 각 workspace에 checkout 되는게 시간도 용량도 답이 없었는데 아래 처럼 각 stage마다 넣어주니 해당 폴더에서만 작업함그래서 다른 item에서 checkout을 이미 했고, 또 다른 item에서 해당 lib를 checkout하면 변경사항만 체크하고 넘어감

 

근데 동시에 두 개 이상 item을 빌드하면 하나는 D:\path, 하나는 D:\path@2 이런식으로 폴더가 하나 더 생기고 @2에 checkout을 다시 하게 되어 문제임

 

그리고 A 프로젝트에서는 lib/A 라이브러리만 필요로해서 checkout시에 lib/a 만 checkout을 받으면 lib를 다 비워버리고 a만 checkout해서 이것도 문제임, 이해가 안 됨

pipeline 
{
    agent none

    stages 
    {
        
        stage('Checkout') 
        {
            agent 
            {
                node 
                {
                    label 'default_node'
                    customWorkspace 'D:/path'
                }
            }

 

만약 msbuild가 없는 vs버전(2005)이라면 아래처럼 빌드하면 됨

C:/Program Files (x86)/Microsoft Visual Studio 8/Common7/IDE/devenv" "D:/your/solution/path/your_solution.sln" /build "Release|Win32

 

email extension 설치 하여 결과 이메일 전송

gmail의 경우 app password를 만들고, jenkins credential에서 global 클릭 > id, app password 추가

build user vars plugin 플러그인 설치

- 빌드를 실행한 사람의 이메일 얻으려고

jenkins 구성 > system에서 email extension에 설정 하고, credential 추가

- 여기 default subject, body는 어떻게 쓰는지 모르겠음

pipeline script에 코드 추가, stages{} 블록 밖에, pipeline{} 블록 안에

 

 

    post {
        success {
            node('node'){
                script {
                    wrap([$class: 'BuildUser']) {
                        def userEmail = env.BUILD_USER_EMAIL
                        def userName = env.BUILD_USER
    
                        if (userEmail) {
                            emailext(
                                to: userEmail,
                                from: 'Jenkins',
                                subject: "[Success] Build Notification: ${JOB_NAME} #${BUILD_NUMBER}",
                                body: """Hello ${userName},
    
                                        The build ${JOB_NAME} #${BUILD_NUMBER} has succeeded.
    
                                        You can check the details here: ${BUILD_URL}
                                        """,
                                mimeType: 'text/plain'
                            )
                        } else {
                            echo "User email not found for ${env.BUILD_USER_ID}"
                        }
                    }
                }
            }
        }
        failure {
            node('default_node'){
                script {
                    wrap([$class: 'BuildUser']) {
                        def userEmail = env.BUILD_USER_EMAIL
                        def userName = env.BUILD_USER
    
                        if (userEmail) {
                            emailext(
                                to: userEmail,
                                from: 'Jenkins',
                                subject: "[Failure] Build Notification: ${JOB_NAME} #${BUILD_NUMBER}",
                                body: """Hello ${userName},
    
                                        The build ${JOB_NAME} #${BUILD_NUMBER} has failed.
    
                                        You can check the details here: ${BUILD_URL}
                                        """,
                                mimeType: 'text/plain'
                            )
                        } else {
                            echo "User email not found for ${env.BUILD_USER_ID}"
                        }
                    }
                }
            }
        }
    }
댓글

티스토리 방명록

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday