从Jenkins工作中标记github

时间:2017-03-14 23:44:03

标签: git jenkins

我已将Timestamp存储到变量中,我需要使用相同的变量来标记Jenkins Job中的github。 更确切地说,#34; Tag To Push"在Git Publisher中,应该是什么条目? 在Execute Shell Command中添加:

APP_BUILD_TAG = $(日期+'%Y%m%d_%H%M')

echo $ APP_BUILD_TAG> releaseStamp

当我输入Tag to Push = $ APP_BUILD_TAG时,它会给我错误,因为它无法识别$ APP_BUILD_TAG。请建议最佳做法,以便我可以使用我们的约定标记为YYYYMMDD_HHMM格式

2 个答案:

答案 0 :(得分:0)

预计失败,标记为推送Git发布者插件允许使用环境变量。但是您创建的变量值是一个局部变量,并且在该执行shell中具有范围,并且不会传递给后构建步骤。

如何解决这个问题:

在下面添加:

echo "TAG_TO_PUSH=${APP_BUILD_TAG}" > releaseStamp.txt

然后使用注入环境构建/后期构建步骤并注入此文件。这会将此变量导出到整个jenkins作业。这样你的Tag To Push也可以使用变量值。

现在在Tag to push部分中,使用以下值:

${TAG_TO_PUSH}

答案 1 :(得分:0)

EnvInject插件无法让您以编程方式生成标签。要解决此问题,我发现有必要使用EnvInject插件两次 -在开始时一次将属性/标签生成为文件,而在SCM签出后一次使用读取文件。 / p>

使用您的示例:

  1. 确保已安装EnvInject插件。
  2. 编辑您的Jenkins配置。在“常规”下,选中“准备 运行环境”(此部分将在 开始)。
  3. 在“脚本内容”文本字段中,输入:echo "APP_BUILD_TAG=$(date +'%Y%m%d_%H%M')" > /path/to/stamp.txt
  4. 向下滚动到“构建环境”。选中“注入环境 变量进入构建过程”(将执行此部分 在SCM结帐后)。
  5. 在“属性文件路径”文本字段中,输入:/path/to/stamp.txt
  6. 滚动到构建后操作,检查Git Publisher插件,添加一个 标签。在“要推送的标签”文本字段中,输入:${APP_BUILD_TAG}

(这是否是最佳实践,这是每个人的猜测;似乎应该有一种更简单的方法,但这是我可以使它工作的唯一方法。)