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

如何验证GitHub仓库名称?Backstage脚手架仓库命名校验方案

Backstage脚手架仓库命名验证方案

一、GitHub仓库名称的验证规则与正则

GitHub仓库名称的官方规则:

  • 可包含字母(大小写)、数字、连字符(-)、下划线(_)、点(.)
  • 不能以连字符、下划线、点开头或结尾
  • 长度限制在1-100字符以内

对应验证正则:

^[a-zA-Z0-9]+(?:[._-][a-zA-Z0-9]+)*$

搭配长度校验:需确保字符串长度在1-100之间。

二、Backstage中repoURL输入的命名规范强制方案

在Backstage的软件模板里,repoURL属于特殊的URL类型输入(通常绑定RepoUrlPicker组件),默认的pattern正则无法直接生效——因为组件会先解析URL,而非直接校验原始输入文本。可以通过以下两种方式解决:

方式1:为repoURL添加自定义验证逻辑

在template.yaml的inputs字段中,给repoURL配置custom验证器,通过JS代码解析URL并提取仓库名称进行校验:

inputs:
  - id: repoURL
    title: 仓库URL
    type: string
    ui:field: RepoUrlPicker
    validation:
      custom:
        message: "仓库名称不符合规范:仅允许字母、数字、连字符、下划线、点,且不能以特殊字符开头/结尾,长度1-100字符"
        code: |
          (value) => {
            // 匹配GitHub仓库URL,提取仓库名称部分
            const githubRepoMatch = value.match(/^https?:\/\/github\.com\/[^\/]+\/([^\/\?#]+)/);
            if (!githubRepoMatch) return false;
            const repoName = githubRepoMatch[1];
            // 应用命名规范正则与长度校验
            const nameRule = /^[a-zA-Z0-9]+(?:[._-][a-zA-Z0-9]+)*$/;
            return nameRule.test(repoName) && repoName.length >= 1 && repoName.length <= 100;
          }

方式2:替换为自定义文本输入(可选)

如果不需要使用RepoUrlPicker组件的自动补全功能,可以将repoURL改为普通文本输入,直接用pattern校验:

inputs:
  - id: repoURL
    title: 仓库URL
    type: string
    pattern: "^https?:\\/\\/github\\.com\\/[^\\/]+\\/[a-zA-Z0-9]+(?:[._-][a-zA-Z0-9]+)*$"
    patternErrorMessage: "仓库URL不符合命名规范,请检查仓库名称部分"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:15:24