我正在尝试创建一个云函数,以侦听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' } }
答案 0 :(得分:0)
我也遇到了同样的问题,我已经通过编写一个小程序包解决了这个问题,您可以使用它或阅读源代码。
https://github.com/MatteoGioioso/google-cloud-build-trigger
使用此软件包,您可以从云构建中运行预配置的触发器。
您还可以扩展以调用其他cloud build
API端点。
据我了解,cloud build
API需要OAuth2或服务帐户。确保在cloud build
下的gcp控制台中对IAM
授予了正确的权限。之后,您应该可以下载service-account.json
文件。
让我知道这是否对您有帮助