[英]How to iterate an array parameter in groovy
假設我們有多個環境,如 dev1、dev2、dev3、qat1、qat2、stg、prod,並且我在 Jenkins 管道中配置了多選參數。 我已將所選參數保存在數組中
env = [ dev1, dev3, qat2]
如何在下面的 function 中一個接一個地迭代這些參數
def DockerPush() {
def artifactory_repo_dev1 = "artifactory.dev1.com"
def artifactory_repo_dev3 = "artifactory.dev3.com"
def artifactory_repo_qat2 = "artifactory.qat2.com"
//Docker Tag
sh "docker tag " + "docker-example" + " " + "artifactory_repo_$env" + ":" + version
//Docker Push to Artifactory
sh "docker push " + "artifactory_repo_$env" + ":" + "${version}"
}
這樣我就不會有任何重復的代碼。 目前我正在使用單個 select 參數和 if else 語句用於所有選定的環境,這使我的代碼大約有 500 行。 我想通過使用 for 循環來最小化代碼並一一迭代選定的參數。
不要使用本地變量來完成這樣的任務(注意,這可以像你想要的那樣工作,但恕我直言,這是令人費解的方式)。
而是使用 map 來存儲環境密鑰和 url 之間的關系。
例如
def chosenEnv = 'env1'
def envToUrl = [env1: "some.url.for.env1.com"]
def url = envToUrl[chosenEnv]
如果您的網址與環境名稱直接相關,您甚至可以生成 map:
def envToUrl = ["env1"].collectEntries{ [it, "some.url.for.${it}.com"] }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.