gpt4 book ai didi

amazon-web-services - AWS CodeBuild buildspec.yml递归获取所有文件和子文件夹

转载 作者:行者123 更新时间:2023-12-04 08:15:09 25 4
gpt4 key购买 nike

我正在尝试使用AWS CodeBuild将所有文件和子文件夹放在嵌套的public文件夹中,并使用CodePipeline部署到S3存储桶。我能够将它们全部钩在一起,但是努力配置buildspec.yml文件以获取所需的输出。

我的文件夹结构:

<path>/public/

├── 404.html
├── css
│   ├── ...
├── fonts
│   ├── bootstrap
│   │   ├── ...
│   ├── icomoon
│   │   ├── icomoon
│   │   │   ├── ...
│   └── simple-line-icons
│   ├── ...
├── images
│   ├── ...
├── index.html
├── index.xml
├── js
│   ├── ...
└── tags
└── index.xml


我需要将 public文件夹中的所有内容(包括子文件夹)放入S3存储桶的根目录中。

到目前为止,我已经尝试遵循文档 hereherehere。我试过使用:


**/*递归地将所有内容保存在文件夹 public中,但是S3存储桶将具有该文件夹的路径,因此 index.html不在根目录中。
discard-paths: yes删除 public文件夹的路径,但是在S3存储桶中,所有文件都位于根目录中,不保留任何子文件夹结构。
base-directory:如 here所述。
artifacts:
secondary-artifacts:
artifact1:
files:
- directory/file
artifact2:
files:
- directory/file2
保留文件夹结构,但我的构建失败。
上面所有语法的不同组合,但是我的构建失败了。

最佳答案

TL; DR您可能不需要使用“ discard-paths:是”。因此,删除“ discard-paths:yes”,然后使用带有“ ** / *”的“基本目录”作为全局模式。请继续阅读以了解更多原因。

所以,是的,正如通常发生的那样,罪魁祸首很简单。在我的情况下,目录结构如下所示:

dist/
|-- favicon.ico
|-- index.html
|-- js
| `-- app.js
`-- revision.txt


因此,为了使工件在保留嵌套目录结构的同时包含“ dist”目录中的所有内容,buildspec必须如下所示:

artifacts:
files:
- '**/*'
base-directory: 'dist'


本质上,“ base-directory”参数的行为与unix的“ cd”命令相同,因此,首先CodeBuild会跳转到该目录,只有在解析了glob模式之后,才跳到该目录-** / *。如果您还碰巧使用了“ discard-paths”,那么大概是CodeBuild将当前目录更改为“ dist”,正确解析了文件结构,但是从解析的路径中删除了所有路径前缀,因此结果是没有嵌套的纯目录结构。

希望有帮助!

关于amazon-web-services - AWS CodeBuild buildspec.yml递归获取所有文件和子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54484028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com