0

我将 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 强制分支规范为“*/”+分支,并忽略除分支、凭据 ID 和 url 之外的任何其他参数。

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

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

4

1 回答 1

3

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

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

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

于 2017-03-20T10:34:30.407 回答