使用通配符 cURL 在管道中上传文件

Uploading files in pipeline with wildcard cURL

我目前 运行 一个依赖 Google 云平台构建文件的管道。我们希望自动执行最后一步,即文件上传。

   - "gcloud compute ssh build-server-turnoff-when-unused --zone=europe-west4-a --command 'cd /mnt/disks/sdb/Project/ci_dev/tmp/deploy/images/project && curl -F 'image=@*.raucb' http://upload.url.com/upload'"

现在的问题是 curl -F 似乎不接受通配符,是否可以完成此操作?

请注意,您的命令有两组“ ”,一组在另一组中,没有退格键

无论如何,

gcloud compute ssh build-server-turnoff-when-unused --zone=europe-west4-a --command "bash -c 'cd /mnt/disks/sdb/Project/ci_dev/tmp/deploy/images/project && for fileimg in *.raucb; do curl -F image="${fileimg}" http://upload.url.com/upload ; done '"

备注:

  • 我使用“bash -c”传递给 --command,因此它只会远程生成一个进程(避免环境问题)
  • cd && 而不是 cd ; 这样如果 cd 失败,for 就不会 运行
  • double " inside single ' inside double " 以避免过度转义(备用引号技巧)
  • foreach 循环中不需要文件扩展名 for fileimg in *.raucb 变量 $fileimg 将包含完整文件名
  • 必须将变量的 $ 引用为 $ 否则它会被父 shell
  • 解释