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

Azure Pipeline变量组变量在Bash脚本中未初始化,求解决方法

从Azure Pipeline变量组读取变量并修复Nexus IQ应用创建脚本

一、Azure Pipeline配置步骤

首先在你的Pipeline YAML文件中,先引用存储了USERCODE、PASSCODE、ORGANIZATIONID的变量组,同时可以将NEWAPP设为流水线参数:

# 引用变量组
variables:
- group: NexusIQ-Variables  # 替换为你的变量组实际名称

# 定义NEWAPP参数(也可将其加入变量组)
parameters:
- name: NEWAPP
  type: string
  required: true

二、修改后的Bash脚本

移除原脚本的位置参数,直接读取Azure注入的环境变量,同时修复脚本中的逻辑错误:

#!/bin/bash

# 直接从Azure Pipeline环境变量中读取值
USERCODE=$USERCODE
PASSCODE=$PASSCODE
ORGANIZATIONID=$ORGANIZATIONID
NEWAPP=${{ parameters.NEWAPP }}  # 若NEWAPP在变量组中,直接用$NEWAPP即可

# 检查必填值是否为空
if [ -z "$USERCODE" ] || [ -z "$PASSCODE" ] || [ -z "$ORGANIZATIONID" ] || [ -z "$NEWAPP" ]; then
   echo 'USERCODE, PASSCODE, ORGANIZATIONID, NEWAPP 不能为空。'
   exit 1
fi

# 分页获取所有应用名称
count=1
uri="https://nexusiq.xxxxxx.com/api/v2/applications"
applications="[]"  # 初始化空JSON数组

while : ; do
  raw=$(curl -u "${USERCODE}:${PASSCODE}" "${uri}?per_page=100&page=${count}")
  # 检查当前页是否有数据
  page_length=$(echo "$raw" | jq -r '.|length')
  if [ "$page_length" -eq 0 ]; then
    break
  fi
  # 提取当前页的应用名称数组并合并到总列表
  page_apps=$(echo "$raw" | jq '[.[].name]')
  applications=$(echo "$applications" "$page_apps" | jq -s '.[0] + .[1]')
  ((count++))
done

# 检查目标应用是否已存在,不存在则创建
if ! echo "$applications" | jq -e --arg app "$NEWAPP" '.index($app) >= 0' >/dev/null; then
  # 用jq构造标准JSON,避免手动拼接的语法问题
  JSON=$(jq -n \
    --arg org "$ORGANIZATIONID" \
    --arg pubid "$NEWAPP" \
    --arg name "$NEWAPP" \
    '{organizationId: $org, publicId: $pubid, name: $name}')
  # 执行创建请求(修复了原脚本中-X前缺少空格的错误)
  curl -u "${USERCODE}:${PASSCODE}" -X POST -H "Content-Type: application/json" "$uri" -d "$JSON"
fi

三、关键修改说明

  • 移除位置参数,直接使用Azure自动注入的环境变量(变量组中的变量会自动转为bash环境变量)
  • 修复原脚本中applicaions的拼写错误
  • 优化分页逻辑,先判断当前页数据长度再处理,避免空数据导致的jq解析错误
  • 使用jq的index方法可靠检查应用是否存在,原脚本将JSON数组当作bash数组处理的逻辑错误
  • 用jq构造JSON,避免手动拼接字符串引发的语法问题
  • 修复curl命令中-X前缺少空格的认证错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:31:14