首页 > 解决方案 > 通过 Cloud Functions 触发 Google Container Builder 构建

问题描述

我正在使用 Container Builder 来处理巨大的 JSON 文件并对其进行转换。如此处所述,这是非标准使用它的一个很好的可能性。

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

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

我试图通过PUT请求和包含成功运行的 JSON 等效项的 JSON 正文触发的 URLcloudbuild.yaml是: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)
    })

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

解决方案


显然,已经有人这样做了。该库位于 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);
});

推荐阅读