如何解决如何在一个源代码库中使用 Google Cloud Build 为多个 Google Cloud 功能实现 CI/CD?
我们正在使用一个单一存储库(GCP 源存储库),它由一个文件夹组成,用于每个云函数(云函数的源代码)。 我们计划做的是使用 Cloud build 实现 CI/CD 管道,但我想知道 如果有一种方法可以以这样一种方式进行设置,即如果我更改一个特定函数的源代码并提交它,那么只会部署该代码。
我是新手,第一次实施 CI CD,如果我不能以适当的方式解释我的问题,请原谅我,任何建议都会有很大帮助。
谢谢。
更新 因此,截至目前,通过使用下面建议的 .yaml 文件,我的构建步骤正在完成,但没有创建任何功能,并且我在发布在此下方的构建日志中收到错误。
我的 YAML 文件
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'bash'
args:
- -c
- |
for d in $(git diff --name-only --diff-filter=AMDR @~..@ | cut -d'/' -f 1);
do
echo $d;
cd $d
gcloud functions deploy $d --region=us-central1 --runtime=python37 --trigger-http
cd ..
done
失败日志 虽然步骤显示成功=(绿色)-
FETCHSOURCE
Initialized empty Git repository in /workspace/.git/
From https://source.developers.google.com/p/xyz/r/testRep
* branch 2f78b61ea0cc45efc3e25570fe4a08707 -> FETCH_HEAD
HEAD is Now at 2fb61 testing
BUILD
Already have image (with digest): gcr.io/cloud-builders/gcloud
fatal: ambiguous argument '@~..@': unkNown revision or path not in the working tree.
Use '--' to separate paths from revisions,like this:
'git <command> [<revision>...] -- [<file>...]'
PUSH
DONE
解决方法
我不知道您的部署是否对每个功能都相同。我认为假设是肯定的。 + 函数名与目录一相同。
因此,我们的想法是提取已更改的目录并循环它们,然后执行操作
steps:
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'bash'
args:
- -c
- |
for d in $(git diff --name-only --diff-filter=AMDR @~..@ | cut -d'/' -f 1);
do
echo $d;
cd $d
gecloud functions deploy $d --region=.... --runtime=.... --trigger-http
cd ..
done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。