【发布时间】:2019-06-25 08:42:42
【问题描述】:
我正在尝试将我的 GitHub 存储库与 S3 挂钩,因此每次提交时,AWS CodePipeline 都会将 ./<path>/public 文件夹部署到指定的 S3 bucket。
到目前为止,在我的管道中,Source 工作(挂钩到 GitHub 并获取新的提交)但 Deploy 失败,因为:Action execution failed
BundleType must be either YAML or JSON。
这是我设置它们的方式:
代码管道
- 动作名称:来源
- 动作提供者:GitHub
- 存储库:帐户/repo
- 分支:master
- GitHub 网络挂钩
代码部署
- 计算类型:AWS Lambda
- 服务角色:myRole
- 部署设置:CodeDeployDefault.LambdaAllAtOnce
IAM 角色:myRole
- AWS 服务
- 选择将使用此角色的服务:Lambda / CodeDeploy
- 选择您的用例:CodeDeploy
- 策略:AWSCodeDeployRole
我了解根文件夹中必须有一个buildspec.yml 文件。我尝试使用一些我能找到的文件,但它们似乎不起作用。我做错了什么或者我应该如何编辑buildspec 文件来做我想做的事?
更新
感谢@Milan Cermak。我知道我需要这样做:
代码管道:
- 第 1 阶段:来源:与 GitHub 存储库挂钩。这个工作正常。
- 第 2 阶段:构建:使用 CodeBuild 仅使用 repo 根文件夹中的
buildspec.yml文件获取所需文件夹。 - 第 3 阶段:部署:使用
Action Provider: S3
Input Artifacts: OutputArtifacts (result of stage 2).
Bucket: the bucket that hosts the static website.
CodePipeline 有效。但是,输出只包含文件 (.html) 而不是嵌套在公用文件夹中的文件夹。
我检查了this 并想出了如何使用discard-paths: yes 删除嵌套文件夹的路径,但我无法获取./<path>/public 文件夹中的所有子文件夹。有什么建议吗?
【问题讨论】:
标签: amazon-web-services github aws-code-deploy aws-codepipeline