【问题标题】:Jenkins Pipeline - Git Plugin 3.1.0 - rawRefSpecs not workingJenkins Pipeline - Git 插件 3.1.0 - rawRefSpecs 不起作用
【发布时间】:2019-05-10 11:36:04
【问题描述】:

我将 Jenkins 与管道插件和 Git 插件版本 3.1.0 一起使用。 根据这张票:https://issues.jenkins-ci.org/browse/JENKINS-40908,这个功能是3.1.0版本的一部分。

我仍然没有成功设置 rawRefSpecs 变量。

这是我的管道配置:

git url: 'ssh://foo/bar.git',
    rawRefSpecs: '+refs/changes/*:refs/changes/*',
    branch: 'bar',
    ...

这是我运行计划时的输出:

 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/bin/git config remote.origin.url ssh://foo/bar.git # timeout=10
Fetching upstream changes from ssh://foo/bar.git
 > /usr/bin/git --version # timeout=10
using GIT_SSH to set credentials 
 > /usr/bin/git fetch --tags --progress ssh://foo/bar.git +refs/heads/*:refs/remotes/origin/*
 > /usr/bin/git rev-parse refs/remotes/origin/bar^{commit} # timeout=10
 > /usr/bin/git rev-parse refs/remotes/origin/origin/bar^{commit} # timeout=10
 > /usr/bin/git rev-parse origin/bar^{commit} # timeout=10

我们可以看到 fetch 保留了 refspecs 的默认参数值。

看起来 GitStep 强制分支规范为 "*/"+branch 并忽略除分支、凭据 ID 和 url 之外的任何其他参数。

https://github.com/jenkinsci/git-plugin/blob/f6ace83fe36740a1ab35612d3b4c5b400647f6ea/src/main/java/jenkins/plugins/git/GitStep.java

那我怎样才能将 refspec 传递给命令呢?

【问题讨论】:

    标签: jenkins jenkins-plugins jenkins-pipeline git-refspec


    【解决方案1】:

    多年来,Git 插件一直支持指定您自己的 refspec。您可以通过 Snippet Generator 在 Checkout 下找到正确的 Pipeline 语法:General SCM > Git > Repositories > Advanced > Refspec。这将为您提供所需的 checkout 语法。

    git 步骤本身目前不支持自定义 refspecs,并且您提到的错误适用于 GitSCMSource,如描述中所述,它用于多分支管道。

    如果您使用的是多分支管道,则可以在 Branch Sources > Git > Advanced > RefSpecs 下找到您正在谈论的新 refspec 选项。

    【讨论】:

    • 这个答案被严重低估了。片段生成器是天赐之物。
    猜你喜欢
    • 2017-04-02
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2021-04-18
    • 2017-10-29
    • 1970-01-01
    相关资源
    最近更新 更多