通过云功能触发Google Container Builder构建

时间:2018-05-08 20:32:14

标签: google-cloud-functions google-container-builder

我正在使用Container Builder来处理巨大的JSON文件并对其进行转换。如here所描述的那样,非标准使用它的可能性很大。

是否可以触发容器构建器构建并通过云功能将参数传递给它?这将允许对GCS中新上传的文件采取行动,并自动通过容器构建器处理它们。

目前我正在尝试使用REST API来触发它(我是Node.js的新手),但我的URL上有404。我正在使用具有完全API访问权限的Cloud Shell实例进行开发。

我尝试通过PUT请求触发的网址以及包含成功运行cloudbuild.yaml的JSON等效的JSON正文:https://cloudbuild.googleapis.com/v1/projects/[PROJECT_ID]/builds

我正在使用Node.js中的请求库:

request({ url: "https://cloudbuild.googleapis.com/v1/projects/[PROJECT_ID]/builds", 
    method: 'PUT', 
    json: {"steps":[{"name":"gcr.io/cloud-builders/gsutil",(...),
    function(error, response, body){
        console.log(error)
        console.log(response)
        console.log(body)
    })

1 个答案:

答案 0 :(得分:1)

显然,已经有人做过了。该库位于GitHub上:https://github.com/mhr3/gcp-container-builder-node,可通过npm:https://www.npmjs.com/package/gcp-container-builder

获取

一开始我的用法并不清楚,但现在我正在使用它:

var build = Object.create(null);
build.steps = [{
    name: 'gcr.io/cloud-builders/gsutil',
    args: ['cp', 'gs://some_bucket/some_file.json', '/workspace/some_file.json']
}]

// more build steps, converting the file, uploading it, etc.

builder.createBuild(build, function(err, resp) {
    console.log(err);
    console.log(resp);
});