我正在尝试使用 Git 项目设置 Jenkins,以便:
-
每当将更改推送到中央存储库时,它将从与模式(源/主、源/功能/*、源/修补程序/* 等(匹配的分支构建
-
开发人员和测试人员可以为他们想要的任何修订触发构建,指定为构建参数,即标记名称、分支名称或提交哈希。该作业具有其他参数,我们偶尔会希望使用默认值以外的其他内容创建构建。
我有 1. 通过在 Git 服务器上设置接收后脚本并在 Jenkins 中添加多个分支说明符来正常工作。
为了也做 2.,我添加了一个额外的构建参数GitRef
然后添加了一个带有 $GitRef
的额外分支说明符。手动启动构建将每次都从相同的提交/分支进行构建,无论参数设置为什么。如果我删除了所有其他分支说明符,手动构建将按预期工作。但是钩子触发的构建将仅从源/主构建(默认值 $GitRef
(。
如果不为每个项目创造两个工作岗位,我试图实现的目标是否可行?如果是这样,我需要做什么才能让它工作?
如果您安装了 Git 参数插件,您可以允许用户使用特定的提交 ID、分支或标记启动参数化构建。
然后,您可以将参数的默认值设置为 **
默认情况下,Jenkins 将在分支上构建最新的提交。
不要使用 $GitRef
作为另一个分支说明符,只需将其用作没有默认值的字符串变量即可。然后,作为 Jenkins 构建阶段的第一步,有一个脚本来检查是否设置了该值:
#!/bin/bash
if [ -n $GitRef ]
then
echo "Manually specified reference found. Building $GitRef"
git checkout $GitRef
else
echo "No explicit branch specified, building $GIT_BRANCH"
fi
此时,按照正常方式运行您的构建(例如 Maven(。构建将运行您希望编译的任何分支/标记/提交,如果它不存在,Jenkins 应该通过失败构建来处理git checkout <bad_ref>
。