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

使用Node.js库调用第二代Cloud Build触发器遇404及仓库适配问题

问题描述

我有一个手动区域Cloud Build触发器,采用第二代Cloud Build仓库与GitHub连接,需要向触发器传递替换变量。参考官方Node.js示例实现时,发现API文档里的repoSource似乎依赖Cloud Source Repositories,想确认是否可以通过该API/库使用第二代仓库。另外,我运行触发器的代码报错:Build initiation error: Error: 5 NOT_FOUND: Requested entity was not found.

代码如下:

const buildRequest = {
    projectId: projectId,
    triggerId: `projects/${projectId}/locations/${triggerLocation}/triggers/${triggerName}`
}

console.log("Build request:", buildRequest);

try {
    const [operation] = await cloudBuildClient.runBuildTrigger(buildRequest);
    res.status(200).json({ message: 'Build started', operation });
} catch (error) {
    console.error('Build initiation error:', error);
    res.status(500).json({ error: 'Failed to start build' });
}
解决方案

1. 第二代仓库的API支持情况

Cloud Build v1 API完全支持第二代仓库,无需局限于Cloud Source Repositories。调用runBuildTrigger时,可在请求体的repoSource字段中指定第二代仓库的资源标识,格式为projects/{project-id}/locations/{region}/repositories/{repo-id}。

2. 报错原因与修复

你遇到的NOT_FOUND错误核心原因是triggerId参数格式错误:runBuildTrigger方法中,triggerId只需传入触发器的短ID(比如abc123xyz),而非完整的资源路径。完整路径的拆分参数(projectId、location)需要单独传入请求体。

另外,如果要传递替换变量,需在请求中添加substitutions字段;若要指定第二代仓库的特定分支/提交,补充repoSource信息即可。

修正后的代码示例

const buildRequest = {
  // 单独传入项目ID、区域
  projectId: projectId,
  location: triggerLocation,
  // 仅传入触发器的短ID
  triggerId: triggerName,
  // 传递替换变量(按需添加)
  substitutions: {
    '_CUSTOM_VAR1': 'value1',
    '_CUSTOM_VAR2': 'value2'
  },
  // 指定第二代仓库信息(按需添加,若触发器已绑定仓库可省略)
  repoSource: {
    repoName: `projects/${projectId}/locations/${triggerLocation}/repositories/${your-2nd-gen-repo-id}`,
    branchName: 'main' // 或指定commitSha/tagName
  }
};

console.log("Build request:", buildRequest);

try {
  const [operation] = await cloudBuildClient.runBuildTrigger(buildRequest);
  res.status(200).json({ message: 'Build started', operation: operation.name });
} catch (error) {
  console.error('Build initiation error:', error);
  res.status(500).json({ error: 'Failed to start build', details: error.message });
}

额外验证步骤

  • 确认triggerName是触发器的短ID:可在Cloud Build控制台的触发器详情页面获取,格式为一串随机字符。
  • 验证第二代仓库的资源路径是否正确:可在Cloud Build仓库页面查看仓库的资源ID。
  • 确保服务账号拥有cloudbuild.triggers.run权限,以及第二代仓库的读取权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 13:34:51