当前位置: 首页 > 知识库问答 >
问题:

AWS代码构建规范。yml以递归方式获取所有文件和子文件夹

孟翰海
2023-03-14

我试图使用AWS CodeBuild获取嵌套的公共文件夹中的所有文件和子文件夹,并使用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 bucket的根目录中。

到目前为止,我已经试着跟踪这里、这里和这里的医生。我尝试使用:

  • **/*以递归方式获取文件夹Public内的所有内容,但是S3桶将具有文件夹的路径,因此index.html不在根目录中。
  • discard-path:是删除路径公共文件夹,但在S3桶内,所有文件都在根,没有子文件夹结构被保留。
  • base目录:如这里所述。
  • 构件:次要构件:构件1:文件:-目录/文件构件2:文件:-目录/文件2保持文件夹结构,但我的构建失败。
  • 以上所有语法的不同组合,但我的构建失败了。

共有3个答案

林烨烨
2023-03-14

我遇到了一个类似的问题,在下面的许多排列之后,语法对我起了作用。

artifacts:
  files:
    - './**/*'
  base-directory: public
  name: websitename
毕霖
2023-03-14

我已经想出了解决这个问题的办法。我不认为这是最好的方法,但它是有效的。我希望您能发现此解决方案非常有用buildspec。yml

version: 0.2

phases:
  build:
    commands:
      - mkdir build-output
      - cp -R <path>/public/ build-output
  post_build:
    commands:
      - mv build-output/**/* ./
      - mv build-output/* ./
      - rm -R build-output *.yml LICENSE README* .git*
artifacts:
  files:
    - '**/*'

用文字:

>

然后在post_build中,我将所有内容移出文件夹build output

删除从我的GitHub回购中提取的文件,这些文件不需要在S3桶中托管静态网站

然后我得到我想要的结果:所有文件内的公共在根的S3桶与正确的文件夹树。

更新:

  • 您也可以在这里使用我的buildspec.yml示例文件。因为这个例子不在这个问题的范围内,所以我不在这里粘贴代码。
  • 我在这里详细解释。
洪飞白
2023-03-14

TL;DR您可能不需要使用“放弃路径:是”。所以,对于glob模式,请删除“discardpath:yes”,并使用带有“***”的“base directory”。请继续阅读,了解更多原因。

所以,是的,就像通常发生的那样,罪犯是微不足道的。在我的例子中,目录结构如下所示:

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

因此,为了让工件包含“dist”目录中的所有内容,同时保留嵌套目录结构,构建规范必须看起来像这样:

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

基本上,“base directory”参数的行为类似于unix的“cd”命令,因此首先CodeBuild跳转到该目录,然后才解析glob模式,在本例中为-***。如果您也碰巧使用了“丢弃路径”,那么可能会发生这样的情况:CodeBuild将当前目录更改为“dist”,正确解析文件结构,但随后从解析的路径中删除所有路径前缀,因此结果将是一个没有嵌套的普通目录结构。

希望有帮助!

 类似资料:
  • 问题内容: 我正在尝试获取目录及其子目录中所有文件的列表。我当前的递归方法如下: 但是,我希望有一种非递归的方式(可能是现有的API调用)来执行此操作。如果不是,这是最干净的方法吗? 问题答案: 您始终可以使用堆栈(对于DFS)或队列(对于BFS)将迭代解决方案替换为迭代解决方案:

  • 问题内容: 我的功能有点问题。我想在许多目录中获取所有文件。目前,我可以检索传入参数的文件中的文件。我想检索作为参数传递的文件夹中每个文件夹的html文件。我会解释,如果我把参数“测试”我检索“测试”的文件,但我想找回“测试/ 1 / * HTML。”,“测试/ 2 / /。 html的”: 结果:[1,2,3] 谢谢 ! 问题答案: 看起来npm软件包会为您提供帮助。这是一个如何使用它的示例:

  • 主要内容:1.SnakeYml,2.jackson-dataformat-yaml,3.Value,4.ConfigurationProperties1.SnakeYml 在使用SnakeYml解析yml时,最常使用的就是load、loadlAll、loadAs方法,这三个方法可以加载yml文件或字符串,最后返回解析后的对象。我们先从基础的load方法开始演示: 接下来看一下loadAll方法,它可以用来加载yml中使用—连接符连接的多个文档,将上面的yml文件进行修改: 在添加了连接符后,尝试

  • 主要内容:1.Environment,2.YamlPropertiesFactoryBean,3.监听事件1.Environment 在Spring中有一个类Environment,它可以被认为是当前应用程序正在运行的环境,它继承了PropertyResolver接口,因此可以作为一个属性解析器使用。先创建一个yml文件,属性如下: 使用起来也非常简单,直接使用@Autowired就可以注入到要使用的类中,然后调用它的getProperty()方法就可以根据属性名称取出对应的值了 在上面的例子中

  • 本文向大家介绍Python 遍历子文件和所有子文件夹的代码实例,包括了Python 遍历子文件和所有子文件夹的代码实例的使用技巧和注意事项,需要的朋友参考一下 最近看ECShop到网上找资料,发现好多说明ECShop的文件结构不全面,于是想自己弄个出来。但这是个无聊耗时的工作,自己就写了个Python脚本,可以递归遍历目录下的所有文件和所有子目录,并将结果记录到一个.xml文件中(因为想使用Not

  • 本文向大家介绍PHP递归获取目录内所有文件的实现方法,包括了PHP递归获取目录内所有文件的实现方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上就是小编为大家带来的PHP递归获取目录内所有文件的实现方法全部内容了,希望大家多多支持呐喊教程~