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

如何在部署流水线中获取所有制品名称并实现下拉选择部署

如何在部署流水线中实现制品名称下拉选择

核心思路

利用构建流水线的制品元数据存储和部署流水线的动态参数化能力,自动同步构建产出的制品列表到部署流水线的可选参数中,彻底替代手动输入/复制操作。

具体实现步骤(主流CI/CD工具通用逻辑)

1. 构建流水线侧:留存制品元数据

在构建生成制品后,把制品名称、分支、构建号等信息存入可被部署流水线访问的存储(工具内置制品库元数据、共享数据库均可):

  • 示例脚本(构建阶段末尾添加):
    # 假设制品名称为$ARTIFACT_NAME,将其写入共享元数据接口
    curl -X POST -H "Content-Type: application/json" -d '{"artifact_name": "'$ARTIFACT_NAME'", "branch": "'$BRANCH_NAME'", "build_number": "'$BUILD_NUMBER'"}' <元数据存储接口地址>
    
    若使用Jenkins、GitLab CI这类自带制品跟踪的工具,可直接依赖其内置功能,无需额外脚本——工具会自动记录每个构建的制品明细。

2. 部署流水线侧:配置动态下拉参数

在部署流水线中添加动态参数,触发时自动拉取所有可用制品名称:

  • Jenkins环境:安装Extended Choice Parameter插件,选择「Dynamic Reference Parameter」,用Groovy脚本从构建流水线拉取制品:
    // 从指定构建流水线中提取符合命名规则的制品名称
    def artifacts = jenkins.model.Jenkins.instance.getItemByFullName("通用构建流水线名称")
                    .getBuilds().collect { build ->
      build.getArtifacts().find { it.getFileName().startsWith("TestProject_") }?.getFileName()
    }.unique().findAll()
    return artifacts.join("\n")
    
  • GitLab CI环境:在.gitlab-ci.yml中通过API调用获取制品列表,将其作为动态变量传入部署流水线,或利用GitLab的「环境变量动态填充」功能实现下拉选择。

3. 优化体验:添加维度筛选

为避免下拉列表过于冗长,可增加分支、日期等筛选参数,动态过滤制品:

  • 示例Groovy脚本(按选中分支过滤):
    def targetBranch = params.SELECTED_BRANCH
    def artifacts = jenkins.model.Jenkins.instance.getItemByFullName("通用构建流水线名称")
                    .getBuilds().findAll { build ->
      build.getEnvironment(null).get("BRANCH_NAME") == targetBranch
    }.collect { build ->
      build.getArtifacts().find { it.getFileName().startsWith("TestProject_") }?.getFileName()
    }.unique().findAll()
    return artifacts.join("\n")
    

注意事项

  • 确保部署流水线拥有访问构建流水线元数据/制品库的权限;
  • 定期清理过期制品,防止下拉列表过度臃肿;
  • GitHub Actions等工具可通过actions/download-artifact结合API调用实现类似逻辑,核心思路一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:22:41