使用 groovy 的 Jenkins 参数

问题描述 投票:0回答:2

我们创建了 jenkins 管道,我们尝试使用帮助活动选择参数插件获取特定项目的 GCP 实例图像列表,并在我们保存作业后使用以下代码,它应该向我们显示特定项目的 gcp 实例图像列表,但它一直是空白的,我们需要这个下拉菜单在构建管道之前可用。

通过在 groovy 中传递这里提到的代码,运行管道时我们不会遇到错误。

我们还创建了服务帐户以将我们的 GCP 项目连接到 Jenkins。

有任何线索,或有任何人这样做过,请告诉我们。

import groovy.json.JsonSlurper
def cmd = "gcloud compute images list --project="xyz" --filter="xyz" | grep 'redhat84-gi'"
def gi_images_json = cmd.execute()
def data = new JsonSlurper().parseText(gi_images_json.text)
def gi_images = [];
return gi_images.sort().reverse

我们在下面模仿 GCP 的相同内容,但本文档说的是 AWS。 https://medium.com/@different.vinod/access-of-ecr-images-tags-as-active-choice-in-jenkins-for-deployments-8dcdbdbff996

谢谢 马亨德拉

我试图在 groovy 的帮助下获取项目中提到的 GCP 实例图像列表,但我没有在下拉列表中获取列表,它一直显示为空白

google-cloud-platform jenkins-pipeline jenkins-plugins jenkins-groovy service-accounts
2个回答
0
投票

我在尝试从 (AWS) ECR 存储库获取图像标签时遇到了类似的问题。我没有解释为什么,但是 groovy

.execute
似乎不喜欢字符串脚本中的
|
s。无论我如何试图逃避它们,我都无法让 grep 或 jq 工作。我决定获取所有图像标签,然后按照常规
.findAll()
function中的正则表达式解析它们,如here.

所述

此外,我只是刚刚注意到,但您真的必须更好地转义 cmd 字符串中的引号。正如上面在您的问题中所写,字符串是“gcloud compute images list --project=”,然后是乱码。那肯定不行。尝试:

def cmd = "gcloud compute images list --project=\"xyz\" --filter=\"xyz\" | grep 'redhat84-gi'"

或者完全将它们排除在外。在这种特殊情况下,它们并不是真正需要的,因为它们没有将包含空格的复杂字符串放在一起。没有它们,写起来要容易得多。像这样:

def cmd = "gcloud compute images list --project=xyz --filter=xyz | grep redhat84-gi"

-3
投票

如何在下拉窗口之前获取 GCP 凭据? 谢谢

© www.soinside.com 2019 - 2024. All rights reserved.