我在让Jenkins构建指定标签时遇到问题.标签是参数化构建的一部分,但我不知道如何将其传递给git插件以构建该标记.这已经花了我3个小时的时间,我已经在堆栈溢出时承认了失败的主人.
Emm*_*ler 204
我能够通过使用"branches to build"参数来做到这一点:
Branch Specifier (blank for default): tags/[tag-name]
Run Code Online (Sandbox Code Playgroud)
将[tag-name]替换为标记的名称.
got*_*nes 75
使用Jenkins CI v.1.555,Git Client插件v.1.6.4和Git插件2.0.4,这些答案都不适合我.
我想要为一个特定的,固定的(即非参数化)标签构建一个Git存储库.我不得不拼凑出各种答案的解决方案以及Thilo引用的"构建Git标签"博客文章 .
git push --tags+refs/tags/*:refs/remotes/origin/tags/**/tags/<TAG_TO_BUILD>(替换<TAG_TO_BUILD>为您的实际标记名称).为我添加Refspec证明是至关重要的.虽然看起来git存储库在我将其留空时默认获取所有远程信息,但Git插件仍然完全无法找到我的标签.只有当我在Refspec字段中明确指定"获取远程标签"时,Git插件才能从我的标签中识别和构建.
更新2014-5-7:不幸的是,这个解决方案确实带来了Jenkins CI(v.1.555)和Git存储库推送通知机制(Stash Webhook到Jenkins)的不良副作用:任何时候存储库上的任何分支都会更新在推送中,标签构建作业也将再次触发.这导致一遍又一遍地重复相同标签作业的大量不必要的重建.我尝试使用和不使用"强制轮询使用工作区"选项配置作业,它似乎没有任何效果.我可以阻止Jenkins为标记作业进行不必要的构建的唯一方法是清除Refspec字段(即删除+refs/tags/*:refs/remotes/origin/tags/*).
如果有人找到更优雅的解决方案,请通过更新编辑此答案.我怀疑,例如,如果refspec具体+refs/tags/<TAG TO BUILD>:refs/remotes/origin/tags/<TAG TO BUILD>而不是星号全能,那么这可能不会发生.但是现在,这个解决方案对我们有用,我们只需在作业成功后删除额外的Refspec.
And*_*ell 15
难道你不能告诉Jenkins从Ref名称构建?如果是的话,那就是
refs/tags/tag-name
Run Code Online (Sandbox Code Playgroud)
从我看到的关于Jenkins和Hudson的所有问题,我建议切换到TeamCity.我没有必要编辑任何配置文件以使TeamCity工作.
小智 9
我做了类似这样的事情并且有效:
Source Code Management
Git
Repositories
Advance
Name: ref
Refspec : +refs/tags/*:refs/remotes/origin/tags/*
Branches to build
Branch Specifier (blank for 'any') : v0.9.5.2
Run Code Online (Sandbox Code Playgroud)

Jenkins日志证实它正在从标签中获取源代码
0b4d6e810546663e931cccb45640583b596c24b9签出修订版(v0.9.5.2)
如果您正在使用Jenkins管道并想要签出特定标记(例如:TAG构建的参数),您可以执行以下操作:
stage('Checkout') {
steps {
checkout scm: [$class: 'GitSCM', userRemoteConfigs: [[url: 'YOUR_GIT_REPO_URL.git', credentialsId: 'YOUR_GIT_CREDENTIALS_ID' ]], branches: [[name: 'refs/tags/${TAG}']]], poll: false
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
142702 次 |
| 最近记录: |