jenkins - 读取控制台日志行/值后设置 Jenkins 变量 -- 或者 -- 使用 Jenkins 调用的脚本/命令使用的变量

标签 jenkins set environment-variables jobs

我不需要以下内容:

  1. 如何设置 Jenkins 环境变量或
  2. 如何在 Jenkins/windows shell/ant/等脚本中使用环境变量。

我需要的与此相反。

摘要: 1.我有一份 Jenkins 工作:ABC_Build 2. 该作业调用 .bat 文件(该文件调用 ANT 代码/目标来打包/构建 build )。当我们创建一个构建时,这项工作知道新的构建标签名称是什么以及 ANT 将其存储在名为“new.build.label”的变量中。使用的文件是build.xml。

(新手用户请注意:如果您想调用许多 Windows 命令(.bat/.cmd 或 创建 Windows shell 的命令)然后,您应该使用“call
来调用它 script.bat -Dparam1 -Dparam2....”方式)。

  1. 现在,此作业调用另一个 .bat 文件(该文件调用 ANT 代码/目标)并使用一个 由第一个 .bat 文件/ANT 包目标生成的参数值 调用(即“new.build.label”)。因为这是一个单独的 .bat 命令调用来调用新的 ANT代码/目标 session ,我需要在期间传递“new.build.label”的值 这一步的调用。这里使用的文件是deploy.xml。

  2. 基本上,我试图了解如何在 Jenkins 中设置变量,方法是使用: A。阅读我的 Jenkins 工作的控制台输出,因为我正在回显以下值 标准输出/控制台输出中的新构建标签。 b.任何其他方式,我可以使用“new.build.label”ANT 设置 jenkins 变量 变量(一旦第一个 .bat/ANT 包目标完成),我准备好调用 第二个 .bat/.cmd/ANT 调用用于进行部署。不幸的是,我不能两者兼得 同时打包/部署。

    我也不想知道为什么我不能从第一个 ANT 调用目标部署 当我已经知道“new.build.label”的值时,我的主要请求是:

    如何使用 Jenkins 调用的脚本(ANT/Jelly/Groovy/Maven/etc)之一使用的“变量”来设置 jenkins 变量。

最佳答案

您可以通过 EnvInject plugin 在 Jenkins 构建步骤之间传递环境变量。在您的特定情况下,以下可能是最好的方法:

  1. 第一个 ANT 应该将 new.build.label 回显到可由 EnvInject 插件读取的属性文件中,例如:

    <echo message="new.build.label=${new.build.label}" file="envars.props" />
    
  2. 创建注入(inject)环境变量构建步骤并将“属性文件路径”设置为envars.props(确保您正确处理路径)。然后new.build.label将作为环境变量用于其余的构建步骤。

顺便说一句,我认为在 Jenkins 中从批处理文件调用 ANT 不是一个好的做法。请改用 ANT 构建步骤。

关于jenkins - 读取控制台日志行/值后设置 Jenkins 变量 -- 或者 -- 使用 Jenkins 调用的脚本/命令使用的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11370937/

相关文章:

algorithm - 集合算法的 Ocaml 实现建议

firebase - 将环境变量部署到 Firebase 托管

Jenkinsfile - 如何使 cron 触发器仅启动特定阶段?

java - 在 Scala 中从 java.util.Set 构造一个 java.util.List

python - 带有 pylint 的 Jenkins 导致构建失败

windows - SET 命令 - float ?

python - 如何将kubernetes实现的 secret 环境变量获取到python中?

windows - 在提升的窗口中调用 BAT 并在之前更改 ENV 变量

parameters - 在 Jenkins/Hudson 中当前打开的工作的显示名称

Jenkins : "Could not initialize class org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist"