Jenkins管道凭证单引号与双引号插值

li9yvcax  于 2023-01-25  发布在  Jenkins
关注(0)|答案(3)|浏览(213)

我使用这里的第一个例子得到了这个Warning: A secret was passed to "httpRequest" using Groovy String interpolation, which is insecure,我把它作为一个环境变量,并把它放在如下的地方

def response = httpRequest url: "https://url...", 
           customHeaders: [[name: 'Authorization', value: "${keyvar}"]]...

这是可行的,但不是应该如何正确地做,如本文档中所描述的,所以下面我尝试了它在这里的建议,使用单引号和没有括号。

def response = httpRequest url: "https://url...", 
           customHeaders: [[name: 'Authorization', value: '$keyvar']]...

这解决了第一个错误,但现在我得到了Response Code: HTTP/1.1 401 Unauthorized,这对我来说意味着插值在单引号内不起作用,如文档所描述的。

k75qkfdt

k75qkfdt1#

我使用aliOssUpload方法代替httpRequest方法,它不能直接将参数传递给参数而不重新转换为字符串。

neskvpey

neskvpey2#

插值警告可通过转义$\keyvar来解决

5m1hhzi4

5m1hhzi43#

为了让Matt Schuchard在评论中给出的答案更清晰,以方便将来遇到这个问题的人--您需要 * 删除字符串插值 * 并直接传递变量:

def response = httpRequest url: "https://url...", 
           customHeaders: [[name: 'Authorization', value: keyvar]]...

这也适用于需要附加前缀的标头(例如Bearer):

def response = httpRequest url: "https://url...", 
           customHeaders: [[name: 'Authorization', value: 'Bearer ' + keyvar]]...

是安全的,而

def response = httpRequest url: "https://url...", 
           customHeaders: [[name: 'Authorization', value: "Bearer $keyvar"]]...

不是。

相关问题