Oli*_*ins 7 google-cloud-platform gcloud
我想知道gcloud builds commit 的作用是什么。就我而言,我正在运行GCloud 运行教程。
官方文档指出它提交了一个构建。这不是一个特别有用的信息。
有人可以提供更多背景信息吗?
什么是构建?一个图像?jar 文件?这个“构建”被提交到哪里?
“提交”是什么意思?这个“提交”过程是否会通过网络推送我的“构建”?
当我运行gcloud builds Submit时,它似乎也在创建一个 docker 映像。所以这也是创建构建,然后提交它???
运行 gcloud builds Submit 命令时会发生几个步骤:
.
;就您的情况而言,构建是一个被推送/提交到容器注册表中的 Docker 容器。提交后,您将能够按照您提供的文档中的指定在 Cloud Run 上部署该容器。
Cloud Build 是一项服务,它将一个或多个容器映像串联应用到某些初始输入文件集,并经常生成一些工件,通常(并非总是)另一个容器映像,通常是最初提交的一些源代码,该服务构建到容器图像。
\nCloud Build 有点类似于 Linux 管道,其中一些输入是通过一系列命令传输数据来转换的: f | g | h | ...
。或者,您可以将其视为复合函数:h(g(f(x)))
。
Cloud Build 被描述(和命名)为构建(将代码写入容器)的服务,但如您所知,实际上这些步骤可能是任何容器映像,并且这些步骤通常会产生副作用,例如将容器映像部署到其他服务(例如 Cloud Run) 。
\nCloud Build 比 Google 宣传的要通用得多。谷歌将其文档范围限制为基于云的软件构建服务。
\n运行时,gcloud builds submit...
您需要提供一些源代码以及 Dockerfile 或配置文件。前者是后者的简单情况,配置文件包含运行的单个步骤docker build...
。
配置文件 (YAML) 列出了一系列容器映像以及连续运行的参数。最初,Cloud Build 将指定源(可以是当前目录)作为目录(自动挂载到每个容器中)复制到 Compute Engine 虚拟机(由服务创建),如下所示/workspace
。
容器(定义为配置文件中的步骤)可以在此文件系统上操作(例如,编译代码、验证文件、您可以在容器中执行的任何操作)。总之,配置文件通常存储在容器注册表等中创建的容器。
\nCloud Build 可能会让新手感到困惑。本着有趣的精神,也为了展示 Cloud Build 的通用性,这里有一个用 Cloud Build 编写的 Rube Goldberg 机器,可以求解二次方程:
\n对于以下情况cloudbuild.yaml
:
steps:\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "Quadratic: $(cat a)x\xc2\xb2+$(cat b)x+$(cat c)s=0"\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "$(cat b) * $(cat b)" | bc -l > b2\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "4 * $(cat a) * $(cat c)" | bc -l > 4ac\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "$(cat b2) - $(cat 4ac)" | bc -l > b2-4ac\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "sqrt($(cat b2-4ac))" | bc -l > sqrt\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "-($(cat b)) + $(cat sqrt)" | bc -l > add\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "-($(cat b)) - $(cat sqrt)" | bc -l > sub\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "2 * $(cat a)" | bc -l > 2a\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "$(cat add)/$(cat 2a)" | bc -l > root1\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "$(cat sub)/$(cat 2a)" | bc -l > root2\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "Roots are: $(cat root1); $(cat root2)"\'\n
Run Code Online (Sandbox Code Playgroud)\n它需要 3 个文件 ( a
, b
, c
)${PWD}
包含 的值ax\xc2\xb2+bx+c=0
。因此对于8x\xc2\xb2-10x+3
:
steps:\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "Quadratic: $(cat a)x\xc2\xb2+$(cat b)x+$(cat c)s=0"\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "$(cat b) * $(cat b)" | bc -l > b2\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "4 * $(cat a) * $(cat c)" | bc -l > 4ac\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "$(cat b2) - $(cat 4ac)" | bc -l > b2-4ac\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "sqrt($(cat b2-4ac))" | bc -l > sqrt\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "-($(cat b)) + $(cat sqrt)" | bc -l > add\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "-($(cat b)) - $(cat sqrt)" | bc -l > sub\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "2 * $(cat a)" | bc -l > 2a\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "$(cat add)/$(cat 2a)" | bc -l > root1\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "$(cat sub)/$(cat 2a)" | bc -l > root2\'\n - name: busybox\n args:\n - ash\n - -c\n - \'echo "Roots are: $(cat root1); $(cat root2)"\'\n
Run Code Online (Sandbox Code Playgroud)\n您可以使用以下命令运行它:
\necho "8" > a\necho "-10" > b\necho "3" > c\n
Run Code Online (Sandbox Code Playgroud)\n解释Rube Goldberg Cloud 构建用于求解二次方程的机器
\n 归档时间: |
|
查看次数: |
8695 次 |
最近记录: |