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

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

CodeDeploy 的示例 CodeBuild

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

重要

运行该示例可能会导致您的 Amazon 账户产生相关费用。其中包括与 Amazon S3 CodeBuild 、 CloudWatch Logs 和 Amazon EC2 相关的Amazon资源和操作可能产生的费用。Amazon KMS有关更多信息,请参阅CodeBuild 定价Amazon S3 定价Amazon Key Management Service定价亚马逊 CloudWatch 定价和 A mazon 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 文件,然后将该 ZIP 文件上传到和支持的源代码存储库类型,例如 S3 输入存储桶或 GitHub 或 Bitbucket 存储库。my-appAmazon CodeBuild CodeDeploy

    重要

    如果您 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 使用 CodeBuild 部署构建输出工件 CodePipeline,则会自动运行构建。)

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

    • 向 IAM 用户授予访问权限, CodeDeploy Amazon服务和操作 CodeDeploy 视情况而定。有关更多信息,请参阅用户指南中的配置 IAMAmazon CodeDeploy 用户

    • 创建或标识服务角色 CodeDeploy 以识别其部署构建输出工件的实例。有关更多信息,请参阅《Amazon CodeDeploy用户指南》 CodeDeploy中的创建服务角色

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

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

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

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

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

    要使用何种部署 CodePipeline,请参阅使用 CodePipeline 和 CodeBuild

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

相关资源