简体   繁体   中英

Is there a way for a Jenkins Pipeline, in a Multibranch setup, to automatically checkout the branch that is at the latest revision?

I'm trying to configure job in Jenkins Multibranch pipeline. There are a lot of branches in SVN and I want the job to checkout only the latest one and ignores the rest of them. This job triggers a pipeline that does multiple checks on the whole build... so I always need to trigger this on the latest branch because there I will have the latest revision of the build.

The SVN structure is like this: V01_01_01 till the latest one V01_08_03. Currently I have it set up like the below and in the Jenkins pipeline I have "checkout scm", but if a new branch appears eg V01_08_04 I need V01_08_03 to be replaced by V01_08_04. Is there any way to do this ?

My set-up in Jenkins Multibranch pipeline

我在 Jenkins Multibranch 管道中的设置

I found a hack to this. I created a python script that checks the whole repository for the latest folder that was updated.

    pipeline
{
    agent any
    parameters
    {
        string(name: 'latest_folder', defaultValue: '')
    }
    stages
    {
        stage ('find latest folder')
        {
            steps
            {
                withPythonEnv('System-CPython-3.8')
                {
                    sh 'pip3 install svn'
                    script {
                        def folder_name = sh(script: 'python3 latest_folder_svn.py', returnStdout: true)
                        env.latest_folder = folder_name
                    }
                }
            }
        }

        stage ('Checkout Step')
        {
            steps
            {
                echo "${env.latest_folder}"
            }
        }
    }
}

This variable I will add it in the checkout step in order to have always the latest branch.

The python script is pretty straightforward. I use svn library to parse the repository and extract what I need.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM