amazon-web-services - CodeBuild 中的工件无法使用 CodeDeploy 进行部署

标签 amazon-web-services aws-code-deploy aws-codepipeline aws-codebuild

使用 CodeBuild,我编译了 SpringBoot 应用程序,并将生成的 jar 放入名为 deploy/ 的文件夹中。在我最后的 buildspec.yml 中,我提供:

artifacts:
   files:
    - deploy/*

当我将其插入 CodePipeline 时,这会在 S3 中创建一个 zip 文件。但问题是,这个 zip 文件包含根文件夹,即 deploy。所以zip文件的结构是:

deploy.zip
  - deploy/
     - appspec.yml
     - app.jar
     - ...

这会导致 CodeDeploy 找不到 appspec.yml 的问题,因为它没有在部署文件夹中查找。我一直在尝试克服这个问题,在构建过程结束时提供一个 zip 文件作为工件,但随后在管道中它会再次被压缩..

任何解决此问题的想法将不胜感激。

最佳答案

您可以在工件部分中添加一个名为 base-directory 的新标志,以指定工件包的基本路径。这将允许您截断工件中的 deploy/ 路径,而不会丢失下面结构的其余部分。

artifacts:
  files:
    - **/*
  base-directory: deploy

http://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html

关于amazon-web-services - CodeBuild 中的工件无法使用 CodeDeploy 进行部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41616305/

相关文章:

scala - 如何在 Amazon EMR 上运行 Spark Scala 代码

amazon-web-services - 使用 IAM 角色从 lambda python boto api 连接现有 EC2

django - 在没有更多任务要运行后,如何让 celery 死掉?

amazon-s3 - 从 S3 复制文件时 AWS CodeBuild 错误 - COMMAND_EXECUTION_ERROR : Reason: exit status 1 (NodeJS)

node.js - AWS CodePipeline 将错误的 JobId 传递给 Lambda (nodejs)

java - 找不到依赖项 'com.amazonaws'

amazon-web-services - AWS 无服务器错误 - 对于表达式 "Stacks[].StackStatus",我们匹配了预期路径 : "ROLLBACK_COMPLETE" at least once

amazon-web-services - Terraform 中 S3 存储桶的 AWS Cloudtrail 事件

linux - 在非根上下文中运行 linux AWS CodeDeploy 代理时出现问题

amazon-web-services - 让两个管道进行通信以在 Beanstalk dev-env 上部署,然后在 prod-env 上发布之前使用 NewMan 运行集成测试