CodeBuild 的 CodeDeploy 示例 - Amazon CodeBuild
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

CodeBuild 的 CodeDeploy 示例

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

重要

运行该示例可能会导致您的 Amazon 账户产生相关费用。其中包括可能对 CodeBuild 和收取的费用。Amazon与亚马逊 S3 相关的资源和行动 3Amazon KMS、CloudWatch Logs 和 Amazon EC2。有关更多信息,请参阅 。CodeBuild 定价Amazon S3 定价Amazon 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

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

    . └── my-app ├── pom.xml └── src ├── main │ └── java │ └── com │ └── mycompany │ └── app │ └── App.java └── test └── java └── com └── mycompany └── app └── AppTest.java
  3. 使用此内容创建文件。将文件命名为 buildspec.yml,然后将其添加到 my-app 目录。

    version: 0.2 phases: install: runtime-versions: java: corretto8 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,然后将其添加到 my-app 目录。

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

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

    . └── my-app ├── buildspec.yml ├── appspec.yml ├── pom.xml └── src ├── main │ └── java │ └── com │ └── mycompany │ └── app │ └── App.java └── test └── java └── com └── mycompany └── app └── AppTest.java
  5. 创建一个包含目录结构和内部文件的 ZIP 文件my-app,然后将 ZIP 文件上传到支持的源代码存储库类型Amazon CodeBuild和 CodeDeploy,例如 S3 输入存储桶或 GitHub 或 Bitbucket 存储库。

    重要

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

    请不要将 my-app 添加到 ZIP 文件中,而只添加 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. 请按照 创建构建项目 中的步骤创建构建项目。

    如果您使用 Amazon 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:4.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 将使用 CodePipeline 使用 CodeBuild Pipeline 自动运行构建。)

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

    • 授予 IAM 用户对 CodeDeploy 和Amazon服务和操作 CodeDeploy 取决于。有关更多信息,请参阅 。预配 IAM 用户中的Amazon CodeDeploy用户指南.

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

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

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

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

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

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

    要使用 CodePipeline 进行部署,请参阅将 CodePipeline 与 CodeBuild 一起使用.

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

相关资源