【问题标题】:Is there a way for a Jenkins Pipeline, in a Multibranch setup, to automatically checkout the branch that is at the latest revision?有没有办法让 Jenkins Pipeline 在多分支设置中自动签出最新版本的分支?
【发布时间】:2020-03-26 21:49:09
【问题描述】:

我正在尝试在 Jenkins Multibranch 管道中配置作业。 SVN 中有很多分支,我希望这项工作只签出最新的分支,而忽略其余的分支。这项工作触发了一个对整个构建进行多次检查的管道......所以我总是需要在最新的分支上触发它,因为我将拥有构建的最新版本。

SVN结构是这样的:V01_01_01直到最新的V01_08_03。目前我已经像下面这样设置它,在 Jenkins 管道中我有“checkout scm”,但是如果出现一个新分支,例如V01_08_04 我需要将 V01_08_03 替换为 V01_08_04。有没有办法做到这一点?

我在 Jenkins Multibranch 管道中的设置

【问题讨论】:

  • 从 Jenkins/git 的角度来看,名为 V01_08_03V01_08_04 的分支之间没有任何关系。一个不是另一个的“更好/以后/更新更多”的版本。您可能希望在所有分支上运行您的工作,了解您正在运行的分支,获取所有分支的列表,如果存在“更好”的版本,请拒绝继续您的工作。
  • tx @MaratC,你是对的!我更改了设置以包含所有分支:在“包含分支”中添加了“/*”,在“排除分支”中添加了除我需要的分支之外的其余部分,因此如果出现新分支,它将由“自动添加”多支”。我在想也许有一种方法可以根据修订号以某种方式识别最新版本...最高版本应该是最新版本...
  • 如前所述,git 分支的名称中没有“最新”、“修订号”和“最高”。未定义对分支名称的比较操作。您可能希望通过为您认为最新的任何分支指定一个特殊名称来解决它,并在新版本推出后合并到其中。在那里,您可能想要命名它,例如master.
  • 你一直在处理 Git,但我在帖子中提到了,正如你在图片中看到的那样,我正在使用 Subversion,我们有修订号......
  • 我不熟悉 Subversion 或它的工作方式,抱歉!

标签: jenkins svn jenkins-pipeline jenkins-groovy


【解决方案1】:

我发现了这个问题。我创建了一个 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 库来解析存储库并提取我需要的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多