如何将日期参数传递给我的 cloudbuild yaml

How to pass date arg to my cloudbuild yaml

我的 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} arg 或其他内容传递到我的第一行,以便我可以看到所有旧报告的视觉顺序吗?

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

谢谢

很确定你应该能够 bash 出去做这样的事情:

- 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 中 运行 系统命令。变量或环境。变量。 (或者至少我还没弄清楚怎么做)

将第一个块更改为:

- 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

说明here and here.


编辑:


对于由 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, and info about entrypoint here.

对语法的很好解释