我正在构建一个项目,将所有文件放在'dist'文件夹中,并通过CodeBuild运行它.我试图让它将'dist'中的所有文件和文件夹放入s3存储桶的根目录中,但是我无法弄清楚如何使其工作.
我的'dist'文件夹看起来像这样:
- index.html
- somecssfiles.css
- fonts/
- - some fonts or w/e
- js/
- - some javascript files
我已经尝试了很多不同的东西,但似乎无法让它只是将'dist/*'放入s3存储桶的根目录中.这是artifacts在buildspec.yml文件中我的属性的当前迭代:
artifacts:
files:
- '*'
discard-paths: yes
base-directory: 'dist'
我认为这可能会奏效,但它忽略了文件夹.任何帮助表示赞赏,感谢阅读.
abb*_*dev 13
我认为您缺少了一块-尚不清楚,但是您需要使用以下工件在Codebuild模板中指定路径:
artifacts:
files:
- '**/*'
base-directory: 'dist'
Run Code Online (Sandbox Code Playgroud)
然后确保在代码构建项目的“工件”部分中,通常指定S3存储桶,但将“可选”名称参数添加为 /
这会将输出设置为S3目录的根-请参阅https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectArtifacts.html#CodeBuild-Type-ProjectArtifacts-name
If type is set to S3, this is the name of the output artifact object. If you set the name to be a forward slash ("/"), the artifact is stored in the root of the output bucket.
小智 5
我只是最近才发现这个问题,因此如果我不正确,请专家原谅我,但是:
这"discard-paths: yes"就是丢弃您的目录结构的原因。它实质上使您的工件集变平。如果(像我一样)只想扔掉到工件文件夹的路径,请将完整路径放在“基本目录”字段中。
再说一遍,我不确定这一部分,但是在我看来,您不能告诉CodeBuild不要对您的工件应用服务器端加密,这意味着,如果您打算让人们浏览的站点,那是不会的工作,至少开箱即用。我最终要做的是根本不使用codebuild的工件部分,而是添加了以下post_build命令:
命令:
- aws s3 sync my/artifact/path/ s3://my-bucket-name/
编辑:我使用创建并添加到Amazon ECR的docker映像进行构建,因此必须在映像中安装AWS CLI才能运行该命令。
| 归档时间: |
|
| 查看次数: |
4935 次 |
| 最近记录: |