从Jenkins访问带有密码凭证参数的用户名使用Groovy命令执行Groovy构建步骤?

时间:2018-08-15 18:18:28

标签: jenkins groovy

软件级别:

  • Jenkins 2.121.2
  • 凭据插件2.1.18
  • 凭证绑定插件1.16
  • 普通证书插件1.4

我正在处理Freestyle项目(而不是管道),并希望对工作的主要处理使用Groovy命令构建步骤。

我正在尝试从用户凭证中获取用户ID和密码,以便常规脚本可以将其用于各种CLI操作。我花了很多时间来寻找答案,但是我发现没有一个起作用。多数不清楚,许多针对管道。

在这一点上,我将不胜感激。

以下是详细信息。

我创建了一个新的参数化Freestyle项目,在其中为“用户名和密码”凭据添加了凭据参数。它默认为我通过凭据插件定义给Jenkins的凭据之一。如果绑定选择要显式使用的凭据,我不确定是否有必要。

enter image description here

我不确定在“构建环境”部分中是否使用了“使用秘密文本或文件”,尽管我不确定这对于用户名/密码样式绑定至关重要。

Build Environment Settings

我添加了“用户名和密码(分隔)”绑定,并将USERID和PASSWORD分别设置为变量。

Bindings

我的groovy命令窗口有以下一行: println(“ $ {USERID} $ {PASSWORD}”)

Groovy command

建立工作时,出现此错误:

The output

2 个答案:

答案 0 :(得分:1)

这两种方式都会将凭据注入到环境变量中,因此您可以从Groovy脚本的环境变量中访问它们,如下所示。

def env = System.getenv()
println env['auth']
println env['USERNAME']
println env['PASSSWORD']

但是两种方法的注入值都不一样。

1)添加凭据作业参数供用户在运行作业时选择

通过这种方式,将插入credentialId,因此您将无法获得用户名和密码。

credentialId example: 1dd4755a-9396-4819-9327-86f25650c7d7

2)使用凭据绑定

这样,用户名和密码就被注入了,我想这就是您想要的。

def env = System.getenv()
def username = env['USERNAME']
def password = env['PASSSWORD']

def cmd = "curl -u $username:$password ...."

通过插件Execute Groovy script

添加 Jenkins构建步骤供应

enter image description here

答案 1 :(得分:0)

总而言之,@ yong帖子中标识的技术仅适用于System Groovy Script构建步骤。最新的插件和Jenkins级别将混淆凭据参数,因此println不能用于通过视觉检查来验证其内容。