将 CodeBuild 工件文件获取到根文件夹,同时保留子文件夹树

如何解决将 CodeBuild 工件文件获取到根文件夹,同时保留子文件夹树

这是我当前的构建规范文件

version: 0.2

phases:
  build:
    commands:
    - pip install mkdocs
    - mkdocs build
artifacts:
  files:
    - site/**/*

我想获取 site 文件夹中的所有文件文件夹。

使用此文件生成的工件具有以下结构:

site
  ├── folder-1
  │   └── file-1.html
  └── folder-2
      ├── file-2.html
      └── subfolder
          └── file-3.html

我想删除 site/ 顶级文件夹,并将所有子文件夹和文件放在工件文件夹的“根”中,因为它包含一个我想上传到 S3 存储桶的静态网站.

因此,当我想保留子文件夹层次结构时,我不能使用 discard-paths 参数,因为所有内容都将被展平。

解决方法

您可以在后期构建中使用 aws s3 sync site/ s3://<bucket_name>

例如

version: 0.2

phases:
  build:
    commands:
    - pip install mkdocs
    - mkdocs build
  post_build:
    commands: aws s3 sync site/ s3://<bucket_name>

这比推送工件文件要好。我试过了,它只是将构建工件添加到 S3 中。使用 sync 命令复制丢失或过时的文件,如果新构建中不存在文件,您也可以使用 --delete 选项删除文件。

在此处查看更多信息:https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html#using-s3-commands-managing-objects-sync

附言确保为 codebuild 添加策略以允许 codebuild 与 S3 存储桶交互

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?