【问题标题】:Retrieve custom variable from a successful jenkins job run via REST api call从通过 REST api 调用运行的成功 jenkins 作业中检索自定义变量
【发布时间】:2016-04-23 15:11:22
【问题描述】:

我想从上次成功的稳定构建 jenkins 作业中检索自定义变量。我能够使用 Execute Shell 在此链接上使用 curl 检索内部版本号。这是一个内部服务器。 https://jenkinsci.internalsvr/view/webapps/job/common-tools/lastStableBuild/buildNumber

现在,我想使用 curl 对自定义变量执行相同的操作。但我知道我可能需要保存自定义变量的值,但不确定如何保存以及保存到何处。

【问题讨论】:

  • 作为一种解决方法,您可以将其值保存在文本文件中,然后将该文件存档为工件。然后 curl/wget 它。
  • 很酷,但是当我归档它时,我要 curl 或 wget 的链接是什么?假设文件名是 info.txt 我没有尝试存档,这就是我有点迷路的原因。谢谢!
  • 我终于搞定了!哇哦!我将其存档并访问了工件 url。
  • @devwannabe “自定义变量”是指工作的参数还是构建步骤中的变量?
  • 请添加您的解决方案或workaroind作为答案,以便其他人可以从中学习。

标签: rest curl jenkins groovy


【解决方案1】:

这就是我的工作方式

我的 dsl.groovy 文件中有这段代码

....

parameters {
    stringParam('CUSTOM_VAR1', '', 'Custom Variable')
    stringParam('CUSTOM_VAR2', '', 'Custom Variable')
}

shellCommands = sprintf('''#/bin/bash
echo "CUSTOM_VAR1=\${%s}" > env.properties
echo "CUSTOM_VAR2=\${%s}" >> env.properties
''', ['CUSTOM_VARIABLE1','CUSTOM_VARIABLE1'])

shell(shellCommands)

// This is extremely important
environmentVariables {
  propertiesFile('env.properties')
}

// This allowed me to retrieve env.properties via http call from browser or curl.

publishers {
  archiveArtifacts {
    pattern('env.properties')
  }
}

所以如果我需要访问它,http url应该是这样形成的

curl https://our-internal-server/job/theNameOfTheJob/lastStableBuild/artifact/env.properties

【讨论】:

    【解决方案2】:

    您可以使用 EnvInject plugin 的 API 来实现,或者使用:

    curl <jenkins-host>/job/<job_name>/<buildNumber>/injectedEnvVars/export
    curl <jenkins-host>/job/<job_name>/<buildNumber>/injectedEnvVars/api/python
    

    更多信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      • 2023-04-11
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      相关资源
      最近更新 更多