在本系列的第2部分中,我们将了解更多有关如何使用CodeBuild服务和ANT或Maven构建实用程序将CodeCommit存储库中的代码在云上进行编译的信息。
最重要的是,不需要提供任何构建服务器。然后将生成的工件存储在AWS S3存储桶中,该存储桶是用于存储和检索Internet上任意数量数据的简单存储服务。这两个教程中的这两个活动都是持续集成的一部分。
在本教程中,我们还将看到如何将Jenkins与CodeBuild集成。
先决条件:
- 在AWS上最好使用免费套餐。
- 良好和快速的互联网连接。
- 使用的AWS地区–亚太地区(新加坡)。
注意:如果您将AWS区域用于CodeCommit服务,则CodeBuild不支持该区域。您需要使用支持的适当区域,因此此处使用新加坡区域。
CodeBuild中的构建过程
以下是使用CodeBuild服务时在构建过程中遵循的过程:
- 从CodeCommit存储库中获取源代码。源代码也可以存储在GitHub或什至S3存储桶中。
- CodeBuild服务依赖于一个名为buildspec.yml的文件,该文件包含一些在构建阶段运行的命令,如Install,Pre-Build,Build和Post-Build。该文件必须位于项目文件夹的ROOT中,并且必须提交到存储库。
- 如果您不想使用buildspec.yml执行构建,则还可以直接使用maven命令。
- 最后,生成的工件(如J2EE JAR / WAR / EAR文件)存储在S3存储桶中。
- 还可以将使用AWS Simple Notification Service(SNS)的通知配置为通过电子邮件将构建结果发送给相关用户。
在这里,我们将看到如何使用CodeCommit存储库(请参阅第1部分)和maven命令来构建我们的项目并将工件存储在S3存储桶中。
创建构建项目
登录到AWS并启动CodeBuild服务。单击以创建一个新的生成项目。
输入详细信息,如下所示:
项目名称: AWS-HelloWorld
来源提供者: AWS CodeCommit
存储库: AWS-HelloWorld
操作系统: Ubuntu
运行时: Java
运行时版本: openjdk-8
构建规范:插入构建命令
构建命令: mvn全新安装
输出文件: Target / AWS-HelloWorld-1.0.0.war(这是从POM文件获取的Artifact ID-Version的格式)。
工件:将工件放置在此构建项目中的位置。
类型: Amazon S3
名称: HWJavaWebTarget(这将是存储桶中的文件夹)。
值区名称: hwcodebuildbucket(该值区必须在运行构建之前首先创建,并且根据约定必须为小写)。
以下3个屏幕截图来自一个表单,用于配置构建项目:
单击继续,然后单击保存。现在可以通过单击“开始构建”按钮来触发构建。
再次单击“开始构建”以查看执行进度。
现在,构建已成功完成,工件已上载到S3存储桶。
S3 bucket存储桶 视图:
现在可以将WAR文件用于部署到适当的应用程序服务器。
Jenkins与AWS CodeBuild的集成
正如我们在本系列教程#1中看到的那样,如何使用CodeCommit存储库配置Jenkins以启用持续集成活动。配置了版本控制存储库后,您现在可以通过将CodeBuild与相同的Jenkins构建作业集成来触发构建。
注意:需要安装Jenkins的AWS CodeBuild插件以进行集成。
使用Jenkins => Manage Plugins安装插件。
选择AWS CodeBuild作为构建环境,然后选择在AWS中配置的适当CodeBuild项目,如下所示。作为配置的一部分,还需要输入IAM用户访问密钥和秘密密钥。
这里需要记住的关键点是,构建不是在本地环境上触发的,而是在云上完成的。因此,无需供应任何构建服务器。
概要
通过本教程,我们了解了如何使用CodeCommit存储库提取代码并使用CodeBuild服务执行Maven构建。
该构建也可以由Jenkins触发。然后将生成的工件(主要是WAR文件)存储在AWS S3存储桶中。