데이터과학 삼학년

[Jenkins] 파이프라인 빌드시 git branch목록을 선택하여 배포! 본문

DevOps

[Jenkins] 파이프라인 빌드시 git branch목록을 선택하여 배포!

Dan-k 2023. 5. 3. 19:20
반응형

jenkins에서 ui상에 git branch목록을 나타내서 선택후 배포하는 방법은

1. jenkins list git branches 이용하여 목록화 하는 방법

source : https://tigi44.github.io/jenkins/Jenkins-Build-with-Parameter%28git-branches%29/

2. git parameter를 사용하고 scm으로 git url 받는 방법

source : https://plugins.jenkins.io/git-parameter/

 

그러나 1, 2번 2가지 케이스를 사용하지 못하는 경우가 있다. 간혹 직접 파이프라인을 만들어야한다던가, 버전의 문제로 list git branches 플러그인을 설치하지 못하던가..

 

이럴때는 

 

젠킨스 파이프라인에서 직접 git에 붙어 브랜치 목록을 가져와 만드는 방법이 있다.

- 내부에서 groovy로 브랜치 목록을 가져오는 함수를 만들고

- parameter 선언에서 choice할 목록을 넣어준다.

 

젠킨스 파이프라인

def getGitBranches(repoUrl) {
    node {
        def branches = []
        try {
            branches = sh(script: "git ls-remote --heads ${repoUrl} | cut -d / -f 3-", returnStdout: true).trim().split("\n")
            echo "params: ${branches}"
        } catch (err) {
            echo "Error getting Git branches: ${err}"
        }
        return branches.collect { it.trim() }.findAll { it }
    }
}
pipeline {
    agent any
    parameters {
        choice(
            name: 'BRANCH_NAME',
            choices: getGitBranches('https://github.<>.git') ,
            description: 'Select the branch to build'
        )
    }
    stages {
        stage('Checkout and merge') {
            steps {
                git url: "${GIT_URL}", branch: "${params.BRANCH_NAME}", credentialsId: "${GIT_CREDENTIALS_ID}"
                echo "parmas:BRANCH_NAME= ${params.BRANCH_NAME}"
                sh """
                    git checkout ${params.BRANCH_NAME}
                    git status
                """
            }
        }
    }
}

비슷한 이런 그림이 나타난다

 

참조

https://plugins.jenkins.io/git-parameter/

728x90
반응형
LIST
Comments