【问题标题】:How to pass date arg to my cloudbuild yaml如何将日期 arg 传递给我的 cloudbuild yaml
【发布时间】:2020-05-20 08:03:14
【问题描述】:

我的cloudbuild.yaml 存在以下情况:

- name: 'gcr.io/cloud-builders/gsutil'
  args: ['-m', 'cp', '-r', '/workspace/api-testing/target/cucumber-html-reports', 'gs://testing-reports/$BUILD_ID']

- name: 'gcr.io/cloud-builders/gsutil'
   args: ['-m', 'rm', '-r', 'gs://studio360-testing-reports/latest']

- name: 'gcr.io/cloud-builders/gsutil'
  args: ['-m', 'cp', '-r', '/workspace/api-testing/target/cucumber-html-reports', 'gs://testing-reports/latest']

这样,我的最新报告始终与旧报告分开。但是我可以在第一行传递一个 {date} 参数或其他东西,这样我就可以看到所有旧报告的视觉顺序?

(因为无法在 gcp 存储/存储桶中按上次修改对文件进行排名)

谢谢

【问题讨论】:

  • 您可以尝试使用您定义的变量值。 Here 你会找到更多关于它的信息。请记住,在定义用户定义的变量时,您需要遵循一组规则。让我知道这是否是您所要求的!我希望它有所帮助。
  • 我正在研究它,我尝试了替换 _FOO = bar 并且它开始构建,但只是在替换步骤的开始处停止。我只在我的日志末尾没有看到明确的错误,它说 ``` CommandException: 1 file/object could not be transfer。 ```你有什么线索吗?另外:我不确定如何放置 var date 我可以使用类似 var date = new Date(); 之类的东西吗?
  • 我可以使用类似 var date = new Date(); 的东西吗?无法在 cloudbuild.yaml 中添加类似的变量。你最好的选择是使用user-defined substitution。该问题可能与不匹配的键有关。请确保遵循文档中提供的规则,以避免在构建 cloudbuild.yaml 时出现不匹配的键。我希望它有所帮助。

标签: google-app-engine google-cloud-build app.yaml


【解决方案1】:

将第一个块更改为:

- name: 'gcr.io/cloud-builders/gsutil' args: ['-m', 'cp', '-r', '/workspace/api-testing/target/cucumber-html-reports', 'gs://testing-reports/${_DATE}_$BUILD_ID']

然后运行这个:

gcloud builds submit . --substitutions _DATE=$(date +%F_%H:%M:%S)

那么你会有这样的东西在桶里:

gs://testing-reports/2020-02-13_14:01:40_8a6a7ed0-62e0-43ed-8f97-aa6eca9c2834

解释herehere


编辑:


对于由 Cloud Build 触发器启动的自动构建,请使用此cloudbuild.yaml

steps:
- name: 'gcr.io/cloud-builders/gsutil'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
    gsutil -m cp -r $FILENAME gs://$BUCKET/$FILENAME-$(date +%F_%H:%M:%S)-$BUILD_ID

这允许构建器使用bash 执行gsutil,因此可以在命令内部使用bash 命令“date”。

Googler here 对语法的很好解释,以及有关入口点 here 的信息。


【讨论】:

  • 这就是我正在寻找的答案@asbovelw,它工作正常。谢谢!
  • 你救了我的命哈哈谢谢!
  • 不客气! :D
【解决方案2】:

很确定您应该能够猛烈抨击并执行以下操作:

- name: 'gcr.io/cloud-builders/gsutil'
  entrypoint: 'bash'
  args: 
  - -c
  - |
    gsutil -m cp -r /workspace/api-testing/target/cucumber-html-reports gs://testing-reports/$BUILD_ID-$(date +%m-%d-%Y)

据我所知,您不能在 sub.xml 中运行系统命令。变量或环境。变量。 (或者至少我无法弄清楚如何)

【讨论】:

  • 遗憾的是这也不起作用,它只是附加文字字符串
  • 你是如何运行构建的?通过 CLI?还是github触发器?我通过 Git 触发器运行,它对我来说很好用……可以试试这个吗? (虽然似乎是多余的)- name: 'gcr.io/cloud-builders/gsutil' entrypoint: 'bash' args: - -c - | echo $(date +%m-%d-%Y) > /workspace/my_date && gsutil -m cp -r /workspace/api-testing/target/cucumber-html-reports gs://testing-reports/$BUILD_ID-$(cat /workspace/my_date)
  • 我做了一个步骤来回显日期,触摸带有日期的文件,然后显示结果如下:Status: Downloaded newer image for gcr.io/cloud-builders/metadata:latest gcr.io/cloud-builders/metadata:latest 2020/02/13 14:54:09 Started spoofed metadata server 2020/02/13 14:54:09 Build id = localbuild_f943b41f-5fd2-4237-9b6a-b6e362e4b2dc 2020/02/13 14:54:09 status changed to "BUILD" BUILD : Already have image (with digest): gcr.io/cloud-builders/gsutil : 02-13-2020 : -rw-r--r-- 1 root root 0 Feb 13 20:54 myfile-02-13-2020.txt(ps - 我在本地运行)
  • 我忘了添加,您可能需要转义命令并添加两个“$”(所以 - $$(date)
  • 感谢@Lance Sandino 的帮助我使用了上面的解决方案(自动云构建),但感谢您的努力!
猜你喜欢
  • 1970-01-01
  • 2018-11-27
  • 1970-01-01
  • 2019-12-30
  • 1970-01-01
  • 2020-10-26
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多