我正在尝试使用Google Cloud build。第一步,我需要获取所有正在运行的计算实例的列表。
- name: gcr.io/cloud-builders/gcloud
args: ['compute', 'instances', 'list']
,效果很好。当我尝试将输出保存到文件时,问题开始了
试验1 :失败
- name: gcr.io/cloud-builders/gcloud
args: ['compute', 'instances', 'list', '> gce-list.txt']
试验2 :失败
- name: gcr.io/cloud-builders/gcloud
args: ['compute', 'instances', 'list', '>', 'gce-list.txt']
试验3 :失败
- name: gcr.io/cloud-builders/gcloud
args: >
compute instances list > gce-list.txt
试验4 :失败
- name: gcr.io/cloud-builders/gcloud
args: |
compute instances list > gce-list.txt
更新:2018-09-04 17:50
试验5 :失败
gcloud compute instances list
有关更多详细信息,您可以检查以下要点: https://gist.github.com/mahmoud-samy/e67f141e8b5d553de68a58a30a432ed2
不幸的是,我遇到了这个奇怪的错误:
rev 1
错误:(gcloud)无法识别的参数:列表(您是说“列表”吗?)
rev 2
错误:(gcloud)无法识别的参数:--version(您是说'--version'吗?)
有什么建议或参考吗?
答案 0 :(得分:3)
除了其他答案外,要执行cmd > foo.txt
,还需要将构建入口点覆盖为bash(或sh):
- name: gcr.io/cloud-builders/gcloud
entrypoint: /bin/bash
args: ['-c', 'gcloud compute instances list > gce-list.txt']
答案 1 :(得分:2)
这些命令不在shell中执行,因此shell操作(例如管道(|
)和重定向(>
)不可用。
使用一个gcloud
具有外壳的容器。 gcr.io/cloud-builders/gcloud
容器应具有bash
,因为它最终是来自Ubuntu 16.04映像的derived。
在您的Cloud Build任务序列中,执行一个Shell脚本,该脚本为您执行gcloud
调用,并将输出重定向到文件。这有一些发现:
gcloud
容器仍然可以使用,因为这将确保您的脚本可以使用Google Cloud SDK工具。您需要将Cloud Build清单中的entrypoint
覆盖为/bin/bash
或其他外壳,并将路径作为参数传递给脚本。compute.instances.list
权限才能列出实例。 /workspace
目录已安装到所有Cloud Build容器中,并且其内容将在后续的构建步骤之间持久保存并可以访问。如果后续的构建步骤需要gcloud
命令的输出或后处理的版本,则可以在此处写出。