适用于 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 定价
运行示例
要运行此示例,请执行以下操作:
-
下载并安装 Maven。有关更多信息,请参阅 Apache Maven 网站上的下载 Apache Maven
和安装 Apache Maven 。 -
切换到您的本地计算机或实例上的空目录,然后运行此 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
-
使用此内容创建文件。将文件命名为
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
-
使用此内容创建文件。将文件命名为
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
-
创建一个在
my-app
中包含目录结构和文件的 ZIP 文件,然后将此 ZIP 文件上传到 AWS 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 -
请按照 创建构建项目 中的步骤创建构建项目。
如果您使用 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: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
" } -
如果您计划使用 CodeDeploy 部署构建输出构件,请按照运行构建中的步骤操作。否则,请跳过此步骤。(这是因为,如果您计划使用 CodePipeline 部署构建输出构件,则 CodePipeline 将使用 CodeBuild 自动运行构建。)
-
完成使用 CodeDeploy 的设置步骤,包括:
-
为 IAM 用户授予访问 CodeDeploy 以及 CodeDeploy 依赖的 AWS 服务和操作的权限。有关更多信息,请参阅 用户指南IAM 中的预置 用户AWS CodeDeploy。
-
创建或标识服务角色,使 CodeDeploy 能够标识将在其中部署构建输出构件的实例。有关更多信息,请参阅 用户指南CodeDeploy 中的为 创建服务角色AWS CodeDeploy。
-
创建或标识 IAM 实例配置文件,使您的实例能够访问包含构建输出项目的 S3 输入存储桶或 GitHub 存储库。有关更多信息,请参阅 用户指南IAM 中的Amazon EC2为 实例创建 实例配置文件AWS CodeDeploy。
-
-
创建或标识在其中部署构建输出构件且与 CodeDeploy 兼容的 Amazon Linux 实例。有关更多信息,请参阅 用户指南CodeDeploy 中的使用适用于 的实例AWS CodeDeploy。
-
创建或标识 CodeDeploy 应用程序和部署组。有关更多信息,请参阅 用户指南CodeDeploy 中的使用 创建应用程序AWS CodeDeploy。
-
将构建输出项目部署到实例。
要使用 CodeDeploy 进行部署,请参阅 用户指南CodeDeploy 中的使用 部署修订AWS CodeDeploy。
要使用 CodePipeline 进行部署,请参阅将 CodePipeline 与 CodeBuild 结合使用。
-
要在完成部署后查找构建输出项目,请登录到实例,然后在
/tmp
目录中查找名为my-app-1.0-SNAPSHOT.jar
的文件。
相关资源
-
有关 AWS CodeBuild 入门的信息,请参阅通过控制台开始使用 AWS CodeBuild。
-
有关解决 CodeBuild 中的问题的信息,请参阅 故障排除AWS CodeBuild。
-
有关 CodeBuild 中的配额的信息,请参阅AWS CodeBuild 的配额。