You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins读取YAML校验Compute账户所有者的流水线问题

问题解决思路与代码修正

原代码存在的问题

  • 未过滤目标账户:遍历了所有类型的账户(包括storage、network),但需求只需要检查compute类型的账户
  • 检查逻辑错误:仅判断所有者是否等于user1,忽略了允许的user2和user3,同时会误判其他类型账户的合法所有者

修正后的代码

def config = readYaml file: "filename.yaml"
// 定义compute账户允许的所有者集合
def allowedComputeOwners = ["user1", "user2", "user3"]

// 遍历所有账户,仅处理compute类型的账户
config.accounts.each { account ->
    // 获取账户类型(每个account是键值对,key为账户名,value为类型)
    def accountType = account.values().first()
    if (accountType == "compute") {
        // 筛选出不在允许列表内的所有者
        def invalidOwners = account.owners.findAll { owner -> !allowedComputeOwners.contains(owner) }
        if (!invalidOwners.isEmpty()) {
            error("Terminating Pipeline... 发现非法所有者: ${invalidOwners.join(', ')}")
        }
    }
}

// 后续流水线步骤
echo "所有compute账户所有者校验通过,进入下一步"

代码说明

  1. 精准过滤目标:通过account.values().first()提取账户类型,仅对compute类型账户执行校验逻辑
  2. 高效合法性判断:用集合存储允许的用户列表,借助contains方法快速判断所有者是否合法
  3. 批量异常排查:一次性找出所有非法所有者并输出,便于定位问题
  4. 不干扰其他账户:非compute类型的账户不触发校验,完全匹配需求

内容的提问来源于stack exchange,提问作者Mahmut Cuta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:16:01