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

如何用Brigade部署自定义Helm Chart?替代Jenkinsfile方案咨询

用Brigade替代Jenkinsfile完成Helm Chart部署的实现方案

我明白你需要把现有Jenkins里的Helm部署流程迁移到Brigade,而且不需要构建镜像,仅通过键值对配置来部署两个Chart。下面是完全对应你Jenkinsfile逻辑的brigade.js实现步骤:

核心思路

Brigade通过Job对象执行命令行任务,我们可以直接复用你Jenkins里的helm upgrade命令,同时实现分支判断、环境变量传递等逻辑,和原Jenkins流程完全对齐。

等效的brigade.js代码

const { events, Job } = require("@brigadecore/brigadier");

// 监听代码仓库的push事件(对应Jenkins的触发条件)
events.on("push", async (event) => {
  // 仅在master分支执行部署,对应Jenkins的when判断
  if (event.revision.ref !== "refs/heads/master") {
    console.log("Skipping deployment: not running on master branch");
    return;
  }

  // 定义部署所需的参数,对应Jenkins的environment块
  const releaseName = "seanmeme-staging";
  const serverHost = "staging.seanmeme.k8s.prydoni.us";
  // 使用Brigade内置的buildID,对应Jenkins的BUILD_ID
  const buildId = event.buildID;

  // 创建一个执行Helm命令的Job,选用包含Helm 3的镜像
  const deployJob = new Job("deploy-helm-charts", "alpine/helm:3.12.0");
  // 设置Job的环境变量,供helm命令调用
  deployJob.env = {
    RELEASE_NAME: releaseName,
    SERVER_HOST: serverHost,
    BUILD_ID: buildId
  };

  // 第一个Helm Chart部署命令,和Jenkins里的第一个sh步骤完全一致
  deployJob.tasks.push(`
    helm upgrade --install --namespace staging $RELEASE_NAME ./helm/seanmeme --set image.tag=$BUILD_ID,ingress.host=$SERVER_HOST
  `);

  // 第二个Helm Chart部署命令,对应Jenkins里的第二个sh步骤
  deployJob.tasks.push(`
    helm upgrade --install --namespace staging $RELEASE_NAME ./helm/seanmeme2 --set image.tag=$BUILD_ID,ingress.host=$SERVER_HOST
  `);

  // 挂载Kubernetes配置,确保Helm能访问集群(Brigade默认服务账号已授权)
  deployJob.mountPath = "/root/.kube";
  deployJob.volumeMounts = [{ name: "kubeconfig", mountPath: "/root/.kube/config" }];
  deployJob.volumes = [{ name: "kubeconfig", secret: { secretName: "brigade-service-account" } }];

  // 执行部署任务
  await deployJob.run();
});

// 启动Brigade事件处理流程
events.process();

关键细节说明

  • 分支判断:通过event.revision.ref检查当前分支是否为master,和Jenkins的when { expression { env.BRANCH_NAME == 'master' } }逻辑完全匹配。
  • 环境变量传递:把原Jenkins里的环境变量直接映射到Brigade Job的env属性中,Helm命令可以通过$变量名直接引用。
  • Helm镜像选择:这里使用alpine/helm:3.12.0镜像,你可以根据自己使用的Helm版本调整镜像标签。
  • 集群访问权限:Brigade默认会给Job挂载服务账号的Kubeconfig,确保Helm能正常与集群通信,如果需要自定义权限,可以调整服务账号的RBAC规则。

额外注意事项

  • 确保你的Brigade项目已经正确关联了代码仓库,这样Job能拉取到./helm目录下的Chart文件。如果Chart不在代码仓库中,可以修改helm命令使用Helm仓库地址或者本地打包的Chart包。
  • 如果需要访问私有镜像仓库或者Helm私有仓库,可以在Job中添加对应的Secret挂载,或者设置相关环境变量。
  • 测试时可以使用brig run命令手动触发构建,验证部署流程是否正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:22:41