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

如何通过Bash脚本调用Harbor API批量创建指定列表中的项目

Harbor批量创建项目脚本修复方案

问题根因

你的脚本无法正常运行核心有两个问题:

  1. 项目名读取异常:projects.txt第一行带projects: 前缀,后续行存在大量前置缩进,直接read p读取到的内容包含多余字符,不符合Harbor项目名要求
  2. Shell变量未解析:你将请求体放在单引号内,Shell不会解析单引号内部的$p变量,Harbor收到的请求中project_name是字面量$p,直接报错

修复后完整脚本

#!/bin/bash
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
# 替换为你自己的Harbor认证Token
HARBOR_TOKEN="jhgkyyktfkghfgfhfgh="

while read -r p
do
  # 处理项目名:去除前缀、前后空格、空行过滤
  p=$(echo "$p" | sed 's/^projects: //' | xargs)
  [ -z "$p" ] && continue

  echo "正在创建项目: $p"
  curl --location --request POST 'https://harbor.rl.com/api/v2.0/projects' \
    --header 'Content-Type: application/json' \
    --header 'X-Resource-Name-In-Location: true' \
    --header "Authorization: Basic $HARBOR_TOKEN" \
    --data-raw '{
      "project_name": "'"$p"'",
      "public": true,
      "metadata": {
        "public": "true",
        "prevent_vul": "true",
        "auto_scan": "true"
      },
      "storage_limit": -1
    }'
  # 加1秒间隔避免触发Harbor限流
  sleep 1
  echo -e "\n项目 $p 处理完成\n"
done < "$DIR/../assets/projects.txt"

额外优化说明

  • 增加了空行过滤逻辑,避免读取到空行发起无效请求
  • 增加了执行日志输出,方便排查单个项目创建失败的问题
  • 增加了请求间隔,避免短时间大量请求触发Harbor的限流规则
  • 认证token提取为变量,后续修改更方便

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:18:01