1

我正在尝试创建一个云函数来侦听 cloudbuilds 主题并进行 API 调用以触发构建。我想我的 index.js 文件中缺少一些东西(我是 Node.js 的新手)。您能否提供一个对 Cloud Build API 进行 API 调用的 Cloud Functions 示例?

这是我的功能:

const request = require('request')

const accessToken = '$(gcloud config config-helper --format='value(credential.access_token)')';

request({
  url: 'https://cloudbuild.googleapis.com/v1/projects/[PROJECT_ID]/builds',
  auth: {
    'bearer': accessToken
  },
  method: 'POST',
  json: {"steps": [{"name":"gcr.io/cloud-builders/gsutil", "args": ['cp','gs://adolfo-test-cloudbuilds/cloudbuild.yaml', 'gs://adolfo-test_cloudbuild/cloudbuild.yaml']}]},
}, 
module.exports.build = (err, res) => {
  console.log(res.body);
});

我正在执行命令gcloud config config-helper --format='value(credential.access_token)',复制令牌,并将其作为变量 accessToken 的值。但这对我不起作用。

这是错误:{ error: { code: 403, message: 'The caller does not have permission', status: 'PERMISSION_DENIED' } }

4

1 回答 1

1

我有同样的问题,我已经通过编写一个小包解决了它,你可以使用它或阅读源代码。 https://github.com/MatteoGioioso/google-cloud-build-trigger 使用此软件包,您可以从云构建运行预配置的触发器。您还可以扩展以调用其他cloud buildAPI 端点。

据我了解cloud build,API 需要 OAuth2 或服务帐户。确保您cloud build在 gcp 控制台中的IAM. 之后,您应该能够下载该service-account.json文件。

于 2019-07-22T23:53:44.383 回答