Octopus Deploy - 使用索引从数组中选择对象

问题描述

我创建了一个名为 ProcessingScript 的变量,其值如下

#{each SiteKey in BatchProcessing.SiteKeys}
ftp://#{BatchProcessing.FtpUser[#{Octopus.Template.Each.Index}]}@
{/each}

这个想法是我遍历我的数组 SiteKeys,它看起来像这样 SiteKeys ['customer1-a' customer1-b'] 和我的 FtpUsers 看起来像这样 ['usera','userb']

但是当我预览它打印的变量时

#{BatchProcessing.FtpUser[#{Octopus.Template.Each.Index}]}customer1-a 
#{BatchProcessing.FtpUser[#{Octopus.Template.Each.Index}]}customer1-b

完全忽略索引

解决方法

我认为您不能通过索引引用列表变量。

你可以试试这些变量:

BatchProcessing.SiteKeys = "customer1-a,customer1-b"
BatchProcessing.FtpUser[customer-a] = "usera"
BatchProcessing.FtpUser[customer-b] = "userb"

还有这个模板:

#{each SiteKey in BatchProcessing.SiteKeys}
ftp://#{BatchProcessing.FtpUser[#{SiteKey}]}@#{SiteKey}
{/each}

我认为如果您仅将 SiteKeys 变量用于循环,您也可以去掉它。

BatchProcessing[customer-a].FtpUser = "usera"
BatchProcessing[customer-b].FtpUser = "userb"
#{each site in BatchProcessing}
ftp://#{site.FtpUser}@#{site}
{/each}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...