在多分支设置中,Jenkins Pipeline 是否有办法自动签出最新版本的分支?
Is there a way for a Jenkins Pipeline, in a Multibranch setup, to automatically checkout the branch that is at the latest revision?
我正在尝试在 Jenkins Multibranch 管道中配置作业。 SVN 中有很多分支,我希望作业只检查最新的一个而忽略其余分支。这项工作触发了一个对整个构建进行多次检查的管道......所以我总是需要在最新的分支上触发它,因为在那里我将拥有构建的最新版本。
SVN结构是这样的:V01_01_01到最新的V01_08_03。目前我将其设置如下,在 Jenkins 管道中我有 "checkout scm",但如果出现新分支,例如V01_08_04 我需要 V01_08_03 替换为 V01_08_04。有什么办法吗?
我在 Jenkins 多分支管道中的设置
我找到了破解方法。我创建了一个 python 脚本来检查整个存储库中是否有更新的最新文件夹。
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}"
}
}
}
}
我将在结帐步骤中添加此变量,以便始终拥有最新的分支。
python 脚本非常简单。我使用 svn 库来解析存储库并提取我需要的内容。
我正在尝试在 Jenkins Multibranch 管道中配置作业。 SVN 中有很多分支,我希望作业只检查最新的一个而忽略其余分支。这项工作触发了一个对整个构建进行多次检查的管道......所以我总是需要在最新的分支上触发它,因为在那里我将拥有构建的最新版本。
SVN结构是这样的:V01_01_01到最新的V01_08_03。目前我将其设置如下,在 Jenkins 管道中我有 "checkout scm",但如果出现新分支,例如V01_08_04 我需要 V01_08_03 替换为 V01_08_04。有什么办法吗?
我在 Jenkins 多分支管道中的设置
我找到了破解方法。我创建了一个 python 脚本来检查整个存储库中是否有更新的最新文件夹。
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}"
}
}
}
}
我将在结帐步骤中添加此变量,以便始终拥有最新的分支。
python 脚本非常简单。我使用 svn 库来解析存储库并提取我需要的内容。