抱歉'svn'风格 - 我们正处于从SVN迁移到GIT(包括我们的CI Jenkins环境)的过程中。
我们需要的是能够让Jenkins结帐(或者我应该说克隆?)GIT项目(存储库?)到一个特定的目录中。我们已经尝试了一些refspecs魔术,但是理解和使用成功并不是很明显。
此外,如果在同一个Jenkins项目中我们需要在项目根目录下将几个私有GitHub存储库签出到几个单独的目录中,我们怎么能这样做呢?
我们安装了GitHub插件。希望我们把事情说得对。
詹金斯的默认git plugin完成了相当不错的工作。
将新的git存储库(项目配置>源代码管理>检查GIT选项)添加到项目后,导航到插件设置的底部,就在存储库浏览器区域的上方。应该有一个高级按钮。单击它后,将出现一个新表单,其值描述为repo的Local子目录(可选)。将此设置为folder
将使插件将存储库签出到相对于工作空间的文件夹中。这样,您可以根据需要在项目中拥有尽可能多的存储库,所有这些存储库都位于不同的位置。
或者,如果您正在使用的项目允许,您可以使用GIT子模块,它类似于SVN中的外部路径。在GIT Book中有一个关于这个主题的部分。如果这不符合某些策略,子模块使用起来相当简单,为您提供了强大的方法来控制将要导入的位置,版本/标签/分支,它将在您的本地存储库中可用,并为您提供更好的可移植性。
显然,GIT插件支持检出子模块,因此Jenkins可以非常有效地使用它们。
我同意@ŁukaszRżanek我们可以使用git plugin
但是,我使用选项:checkout到子方向启用如下: 在源代码管理中,勾选Git 单击“添加”按钮,选择“结帐”到子目录
在新的Jenkins 2.0管道(以前称为Workflow Plugin)中,这对于:
这里我特指的是Multibranch Pipeline版本2.9。
主存储库
这是包含Jenkinsfile
的存储库。
在管道项目的“配置”屏幕中,输入存储库名称等。
不要使用其他行为>签出到子目录。这将把你的Jenkinsfile
放在子目录where Jenkins cannot find it中。
在Jenkinsfile
中,使用dir()
查看子目录中的主存储库:
dir('subDir') {
checkout scm
}
其他存储库
如果要查看更多存储库,请使用Pipeline Syntax生成器自动生成Groovy代码段。
在管道项目的“配置”屏幕中:
env.BRANCH_NAME
包含主存储库的分支名称。Jenkinsfile
中。值得研究的是Pipeline插件。使用该插件,您可以将多个VCS项目签出到相关目录路径中。事先为每个VCS结帐创建一个目录。然后向新签出的VCS工作区发出命令。就我而言,我正在使用git。但你应该明白这个想法。
node{
def exists = fileExists 'foo'
if (!exists){
new File('foo').mkdir()
}
dir ('foo') {
git branch: "<ref spec>", changelog: false, poll: false, url: '<clone url>'
......
}
def exists = fileExists 'bar'
if (!exists){
new File('bar').mkdir()
}
dir ('bar') {
git branch: "<ref spec>", changelog: false, poll: false, url: '<clone url>'
......
}
def exists = fileExists 'baz'
if (!exists){
new File('baz').mkdir()
}
dir ('baz') {
git branch: "<ref spec>", changelog: false, poll: false, url: '<clone url>'
......
}
}
此外,如果在同一个Jenkins项目中,我们需要在项目根目录下将几个私有GitHub存储库签出到几个单独的目录中。我们怎么能这样做?
Jenkin's Multiple SCMs Plugin非常好地解决了我的几个存储库问题。我刚刚完成了一个项目构建,它检查了一个公共文件夹下的四个不同的git repos。 (我有点不愿意使用git超级项目作为ŁukaszRżanek的suggested previously,因为git足够复杂而没有子模块。)
我不使用github插件,但是从介绍页面来看,它或多或少都像gerrit-trigger插件。
您可以安装git插件,它可以帮助您检查项目,如果您想在一个jenkins工作中包含多个项目,只需将Repository添加到您的工作中。