Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Jenkins作业中标记github_Git_Jenkins - Fatal编程技术网

从Jenkins作业中标记github

从Jenkins作业中标记github,git,jenkins,Git,Jenkins,我已经将时间戳存储到一个变量中,我需要使用同一个变量来标记Jenkins作业中的github。 更准确地说,在Git Publisher中,“Tag To Push”应该是什么条目? 在执行Shell命令中添加: 应用程序\u生成\u标记=$(日期+“%Y%m%d\u%H%m”) echo$APP\u BUILD\u TAG>releaseStamp 当我输入tagtopush=$APP\u BUILD\u标记时,它会给我错误,因为它无法识别$APP\u BUILD\u标记。请建议最佳做法,以便

我已经将时间戳存储到一个变量中,我需要使用同一个变量来标记Jenkins作业中的github。 更准确地说,在Git Publisher中,“Tag To Push”应该是什么条目? 在执行Shell命令中添加:

应用程序\u生成\u标记=$(日期+“%Y%m%d\u%H%m”)

echo$APP\u BUILD\u TAG>releaseStamp


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

预计会失败,标记推入Git publisher插件允许使用环境变量。但是,您创建的变量值是一个局部变量,在该执行shell中具有作用域,并且不会传递到生成后步骤

如何解决此问题:

添加以下内容:

echo "TAG_TO_PUSH=${APP_BUILD_TAG}" > releaseStamp.txt
然后使用注入环境构建/后构建步骤并注入此文件。这将把这个变量导出到整个jenkins作业中。因此,要推送的标记也将能够使用变量值

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

${TAG_TO_PUSH}

EnvInject插件不允许以编程方式生成标记。为了解决这个问题,我发现有必要使用EnvInject插件两次——一次在开始时,将属性/标记生成为文件,一次在SCM签出后,读取文件

以您的例子:

  • 确保已安装EnvInject插件
  • 编辑Jenkins配置。在“常规”下,勾选“准备 运行环境”(此部分将在 开始)
  • 在“脚本内容”文本字段中,键入:
    echo“APP\u BUILD\u TAG=$(日期+“%Y%m%d\u%H%m”)”>/path/to/stamp.txt
  • 向下滚动至“构建环境”。选中“注入环境” 构建过程中的变量”(本节将执行 SCM签出后)
  • 在“属性文件路径”文本字段中,键入:
    /path/to/stamp.txt
  • 滚动到构建后操作,检查Git Publisher插件,添加 标签。在“要推送的标记”文本字段中,键入:
    ${APP\u BUILD\u Tag}

  • (这是否是最佳实践是任何人的猜测;似乎应该有一个更简单的方法,但这是我能让它工作的唯一方法。)

    注意,这需要@Christopher同意+1