AWS CodeBuild
用户指南 (API 版本 2016-10-06)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

适用于 CodeBuild 的 CodeDeploy 示例

此示例指示 AWS CodeBuild 使用 Maven 来生成一个名为 my-app-1.0-SNAPSHOT.jar 的 JAR 文件作为构建输出。然后,此示例使用 CodeDeploy 将 JAR 文件部署到 Amazon Linux 实例。(或者,您可以使用 AWS CodePipeline 来自动使用 CodeDeploy 以将 JAR 文件部署到 Amazon Linux 实例。) 该示例以 Apache Maven 网站上的 5 分钟学会 Maven 主题为基础。

重要

运行此示例可能会导致您的 AWS 账户产生相关费用。这些费用包括可能针对 CodeBuild 和 AWS 资源以及与 Amazon S3、AWS KMS、CloudWatch Logs 和 Amazon EC2 相关的操作收取的费用。有关更多信息,请参阅 CodeBuild 定价Amazon S3 定价AWS Key Management Service 定价Amazon CloudWatch 定价Amazon EC2 定价

运行示例

要运行此示例,请:

  1. 下载并安装 Maven。有关更多信息,请参阅 Apache Maven 网站上的下载 Apache Maven安装 Apache Maven

  2. 切换到您的本地计算机或实例上的空目录,然后运行此 Maven 命令。

    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    如果成功,将创建此目录结构和文件。

    (root directory name) `-- my-app |-- pom.xml `-- src |-- main | `-- java | `-- com | `-- mycompany | `-- app | `-- App.java `-- test `-- java `-- com `-- mycompany `-- app `-- AppTest.java
  3. 使用此内容创建文件。将文件命名为 buildspec.yml,然后将其添加到 (root directory name)/my-app 目录。

    version: 0.2 phases: install: runtime-versions: java: openjdk8 build: commands: - echo Build started on `date` - mvn test post_build: commands: - echo Build completed on `date` - mvn package artifacts: files: - target/my-app-1.0-SNAPSHOT.jar - appspec.yml discard-paths: yes
  4. 使用此内容创建文件。将文件命名为 appspec.yml,然后将其添加到 (root directory name)/my-app 目录。

    version: 0.0 os: linux files: - source: ./my-app-1.0-SNAPSHOT.jar destination: /tmp

    完成后,您的目录结构和文件应该如下所示。

    (root directory name) `-- my-app |-- buildspec.yml |-- appspec.yml |-- pom.xml `-- src |-- main | `-- java | `-- com | `-- mycompany | `-- app | `-- App.java `-- test `-- java `-- com `-- mycompany `-- app ` -- AppTest.java
  5. 创建一个在 (root directory name)/my-app 中包含目录结构和文件的 ZIP 文件,然后将此 ZIP 文件上传到 AWS CodeBuild 和 CodeDeploy 支持的源代码存储库类型,如 Amazon S3 输入存储桶或 GitHub 或 Bitbucket 存储库。

    重要

    如果您要使用 CodePipeline 部署构建的构建输出项目,则无法将源代码上传到 Bitbucket 存储库。

    请勿将 (root directory name)(root directory name)/my-app 添加到 ZIP 文件,仅添加 (root directory name)/my-app 内的目录和文件。ZIP 文件应包含以下目录和文件:

    CodeDeploySample.zip |--buildspec.yml |-- appspec.yml |-- pom.xml `-- src |-- main | `-- java | `-- com | `-- mycompany | `-- app | `-- App.java `-- test `-- java `-- com `-- mycompany `-- app ` -- AppTest.java
  6. 请按照 创建构建项目 中的步骤创建构建项目。

    如果您使用 AWS CLI 创建构建项目,则 create-project 命令的 JSON 格式输入可能与此类似。(请将占位符替换为您自己的值。)

    { "name": "sample-codedeploy-project", "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/CodeDeploySample.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID-account-ID-output-bucket", "packaging": "ZIP", "name": "CodeDeployOutputArtifact.zip" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:2.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" }
  7. 如果您计划使用 CodeDeploy 部署构建输出项目,则请按照运行生成项目中的步骤操作。否则,请跳过此步骤。(这是因为,如果您计划使用 CodePipeline 部署构建输出项目,则 CodePipeline 将使用 CodeBuild 自动运行构建。)

  8. 完成使用 CodeDeploy 的设置步骤,包括:

    • 为 IAM 用户授予访问 CodeDeploy 以及 CodeDeploy 依赖的 AWS 服务和操作的权限。有关更多信息,请参阅 CodeDeploy 用户指南 中的预置 IAM 用户

    • 创建或标识服务角色,使 CodeDeploy 能够标识将在其中部署构建输出项目的实例。有关更多信息,请参阅 CodeDeploy 用户指南 中的为 CodeDeploy 创建服务角色

    • 创建或标识 IAM 实例配置文件,使您的实例能够访问包含构建输出项目的 Amazon S3 输入存储桶或 GitHub 存储库。有关更多信息,请参阅 CodeDeploy 用户指南 中的为 Amazon EC2 实例创建 IAM 实例配置文件

  9. 创建或标识在其中部署构建输出项目且与 CodeDeploy 兼容的 Amazon Linux 实例。有关更多信息,请参阅 CodeDeploy 用户指南 中的使用适用于 CodeDeploy 的实例

  10. 创建或标识 CodeDeploy 应用程序和部署组。有关更多信息,请参阅 CodeDeploy 用户指南 中的使用 CodeDeploy 创建应用程序

  11. 将构建输出项目部署到实例。

    要使用 CodeDeploy 进行部署,请参阅 CodeDeploy 用户指南 中的使用 CodeDeploy 部署修订

    要使用 CodePipeline 进行部署,请参阅将 AWS CodePipeline 与 CodeBuild 结合使用

  12. 要在完成部署后查找构建输出项目,请登录到实例,然后在 /tmp 目录中查找名为 my-app-1.0-SNAPSHOT.jar 的文件。

相关资源

本页内容: