我正在尝试使用google云构建。在一个步骤中,我需要获得所有正在运行的计算实例的列表。
- 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
有关更多详细信息,您可以查看下面的gist:https://gist.github.com/mahmoud-samy/e67f141e8b5d553de68a58a30a432ed2
不幸的是,我犯了一个奇怪的错误:
rev 1
错误:(gcloud)无法识别的参数: list (您的意思是‘list’吗?)
rev 2
错误:(gcloud)无法识别的参数:--版本(您是指“-版本”吗?)
有什么建议或参考吗?
发布于 2018-09-04 18:51:52
除了其他答案之外,要执行cmd > foo.txt
,还需要将构建入口点重写为bash (或sh):
- name: gcr.io/cloud-builders/gcloud
entrypoint: /bin/bash
args: ['-c', 'gcloud compute instances list > gce-list.txt']
发布于 2018-09-03 12:17:57
这些命令不会在shell中执行,因此shell操作(如管道(|
)和重定向(>
) )不可用。
解决办法
使用具有shell的gcloud
容器。gcr.io/cloud-builders/gcloud
容器应该有bash
,因为它最终是来自Ubuntu16.04映像的导出。
在云构建任务序列中,执行一个shell脚本,为您执行gcloud
调用,并将输出重定向到文件。这有一些意见:
gcloud
容器,因为这将确保您的脚本可以使用Google工具。您需要覆盖云构建清单中的entrypoint
,使其为/bin/bash
或其他shell,并将路径作为参数传递给脚本。compute.instances.list
权限来列出实例。/workspace
目录被挂载到所有云构建容器中,其内容将在后续构建步骤之间持久化并可访问。如果后续的构建步骤需要gcloud
命令或后处理版本的输出,您可以在这里写出它。
相关Google文档。
https://stackoverflow.com/questions/52152526
复制相似问题