微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在一个源代码库中使用 Google Cloud Build 为多个 Google Cloud 功能实现 CI/CD?

如何解决如何在一个源代码库中使用 Google Cloud Build 为多个 Google Cloud 功能实现 CI/CD?

我们正在使用一个单一存储库(GCP 源存储库),它由一个文件夹组成,用于每个云函数云函数的源代码)。 我们计划做的是使用 Cloud build 实现 CI/CD 管道,但我想知道 如果有一种方法可以以这样一种方式进行设置,即如果我更改一个特定函数的源代码并提交它,那么只会部署该代码

  • 我们有大约 50 个不同的代码(它在我们的主存储库中创建了 50 个文件夹)
  • 每个文件夹由requirement.txt、所需的.json文件和main.py组成

我是新手,第一次实施 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?