Jenkins - 如何在同一个 shell 字符串中使用凭据和参数?

Jenkins - How to use credentials and parameters within same shell string?

我目前遇到一个问题,我必须在同一个 shell 字符串中使用参数和凭据,这给我带来了很多麻烦。

在 Jenkins 中处理密码时,文档强调使用单引号以避免插入敏感变量:

双引号示例:

单引号示例:

但是,使用单引号会导致我的参数没有被插值,如下图所示:

因此,我找不到可以让我同时拥有两者的解决方案,而且在我看来,这让我有以下选择之一:

  1. 我可以选择使用单引号,这会导致我的凭据 被屏蔽但我的参数没有被插值。
  2. 我可以选择使用双引号,但是,我的用户名和密码 不再被屏蔽,但我的参数正在被插值。

有人知道是否可以将两者放在同一个字符串中或知道某种解决方法吗?

您可以使用双引号,但像这样对秘密变量转义 $

sh("curl -u $USERNAME:$PASSWORD ${url}")

你也可以使用单引号:

sh('curl -u $USERNAME:$PASSWORD ' + url)

您可以将它与 withCredentials() 一起使用。