作为CD管道的一部分,我正在设置Google Cloud Function以处理新的回购推送,创建docker映像并将其推送到注册表。我所有的工作都在一台VM上进行,但是不必为此仅运行24x7。
因此,查看NodeJS reference library时,我找不到使用node将映像推送到注册表的方法。似乎没有针对节点的注册表或构建SDK?
基本上,我所需要的只是从云函数执行以下命令:
gcloud builds submit --tag gcr.io/my_project/my_image
。
答案 0 :(得分:0)
很有可能使用Cloud Build API来做到这一点。这是一个使用client libary for Node.js的简单示例。
exports.createDockerBuild = async (req, res) => {
const google = require('googleapis').google;
const cloudbuild = google.cloudbuild({version: 'v1'});
const client = await google.auth.getClient({
scopes: ['https://www.googleapis.com/auth/cloud-platform']
});
const projectId = await google.auth.getProjectId();
const resource = {
"source": {
"storageSource": {
"bucket": "my-source-bucket",
"object": "my-nodejs-source.tar.gz"
}
},
"steps": [{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"gcr.io/my-project-name/my-nodejs-image",
"standard-hello-world"
]
}],
"images": ["gcr.io/$PROJECT_ID/my-nodejs-image"]
};
const params = {projectId, resource, auth: client};
result= await cloudbuild.projects.builds.create(params);
res.status(200).send("200 - Build Submitted");
};
我的源代码在存储桶中,但是您可以轻松地将其从存储库中提取出来。
请记住,您需要使用Node.js 8 beta运行时才能使异步内容正常工作。