使用Cloud Function触发云构建管道

时间:2019-01-09 21:15:09

标签: google-cloud-functions google-cloud-build

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

这是我的功能:

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' } }

1 个答案:

答案 0 :(得分:0)

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

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

让我知道这是否对您有帮助