在这个由3部分组成的新系列文章中,我将重点介绍使用Amazon Web Services(AWS)云DevOps服务工具进行DevOps(CI和CD)的动手方法。
介绍
让我们在下图的帮助下回顾一下各种工具:

- AWS CodeCommit:这是一个安全的在线版本控制服务,托管私有Git存储库。团队无需维护自己的版本控制存储库,而是可以使用AWS CodeCommit存储其源代码,甚至可以存储从构建生成的WAR / JAR / EAR文件之类的二进制文件。
- AWS CodeBuild:它是云上的构建服务,团队可以借助该服务编译其源代码并生成可用于部署的目标工件。由于编译是在云上完成的,因此您无需提供任何特定的构建服务器。
- AWS CodeDeploy:这是部署服务,可自动将应用程序部署到Amazon EC2 Linux或Windows实例。
- AWS CodePipeline:它有助于提供端到端交付过程的直观视图,并使用上述AWS DevOps工具进行了配置。
同样,由于Jenkins是当今大多数组织使用的最受欢迎的CI工具之一,我们还将研究这些AWS DevOps工具如何与之集成。
在第一个教程中,我将重点介绍AWS CodeCommit,以及如何将您的源代码和其他工件安全地存储在此存储库中。整个系列将使用一个简单的J2EE Web项目。
先决条件:
- 在AWS上最好使用免费套餐。
- 安装在本地计算机上的Git。
- Eclipse IDE。
- 使用的AWS地区–亚太地区(新加坡)。
- 最重要的是一个非常好的和快速的互联网连接。
创建AWS CodeCommit存储库
登录到AWS管理控制台。需要一个AWS账户才能登录。我使用了免费的第一层。成功登录后,启动AWS CodeCommit Web服务并创建一个存储库。
输入名称和描述,然后单击创建存储库。

空存储库如下所示创建。

创建一个IAM用户
必须使用Eclipse之类的IDE,为团队成员创建IAM用户,作为使用存储库中的源代码的一部分,并且必须提供适当的完全CodeCommit访问权限。这将对团队的访问权限定义为安全性的一部分。
由于CodeCommit信息库是云中私有托管的Git信息库,因此,每个IAM用户都需要Git凭据才能通过HTTPS与CodeCommit信息库进行通信。
因此,通常将创建J2EE项目,并借助Git凭据和Git命令(例如git push,git pull等)将项目推送到CodeCommit存储库。通信将通过HTTPS完成。
我们将为一名IAM用户看到该过程,您可以为多个用户重复相同的步骤。
#1)创建一个IAM用户并提供访问权限。
转到AWS中的IAM服务。单击用户类别->添加用户。

输入访问类型的用户名和程序访问复选框。单击下一步- >权限。

为用户设置AWS CodeCommit的完全访问权限。

单击下一步- >查看

单击创建用户。
记住要下载或复制访问密钥ID和秘密密钥访问。这将用于多种服务。因此,随时随地保持可用状态非常重要。作为AWS管理员,您将需要通过电子邮件将其发送给用户。
完成后,单击“关闭”。

#2)为用户生成Git凭证。
单击新创建的用户,然后转到“安全凭据”选项卡。


单击AWS CodeCommit的HTTPS Git凭证下的Generate按钮。
此凭据也必须通过电子邮件发送给用户。因此,您可以复制或下载它们。复制后,单击“关闭”。

必须对需要在CodeCommit存储库上工作的每个用户执行以上两个步骤。
在Eclipse中创建J2EE Web项目
作为开发人员,您将使用任何可用的IDE进行Java / J2EE代码开发。
假设Eclipse是本例中使用的IDE。使用此IDE,我们将创建一个基于Maven的J2EE Web项目,并将内容推送到CodeCommit存储库中,以供团队使用。
在创建项目之前,请使用AWS Toolkit插件将CodeCommit安装到Eclipse中。单击此处更新站点。这将有助于使用Git命令从IDE直接与CodeCommit存储库进行通信。

打开AWS Explorer视图,AWS CodeCommit应该可见。

现在创建一个AWS Java Web Project并将代码添加到index.html文件,如下所示。


单击“配置AWS帐户”,然后输入之前创建的IAM用户访问密钥和秘密密钥,然后单击“完成”。


确保还安装了EGit插件。将创建的项目共享到本地GIT存储库,并将代码推送到CodeCommit存储库。右键单击项目,然后选择团队->共享项目。


单击下一步,然后在本地计算机上的适当文件夹中创建新的存储库。


点击完成。

点击完成。
将更改提交到本地Git存储库。右键单击项目,然后选择“团队”->“提交”。

将文件从“未暂存的更改”拖放到“暂存的更改”,然后单击“提交”按钮。

现在我们有了本地提交的存储库,现在可以将本地存储库推送到我们先前创建的CodeCommit存储库。
首先,从AWS CodeCommit控制台复制克隆URL HTTPS。

返回Eclipse中,右键单击并选择Team-> Push Branch’master’。

选择HTTPS协议,然后粘贴Clone URL HTTPS,然后输入作为IAM用户的一部分创建的Git凭据。

单击下一步。

单击下一步。

单击完成将更改推送到CodeCommit存储库。完成后,将出现成功消息屏幕。

上面的commit和push命令也可以在命令行中使用Git命令(git commit和git push)来完成(如果可以的话)。
现在应该使用Eclipse项目代码来更新存储库。一旦代码可用,其他开发人员就可以克隆存储库,并使其在本地计算机上可用以进行进一步的开发,然后使用标准git命令或从Eclipse IDE将代码推回到CodeCommit存储库。
单击CodeCommit存储库的CONNECT按钮时,即可获得克隆存储库的说明。

Jenkins与AWS CodeCommit的集成
Jenkins是持续集成的流行工具之一。今天的团队希望利用Jenkins的CI活动。因此,作为CI管道的一部分,您可以连接到CodeCommit存储库并为构建活动提供IAM用户凭据,而不是连接到GitHub存储库。
这是Jenkins使用IAM用户凭据为存储库引用CodeCommit克隆URL HTTPS的屏幕截图。
一旦将存储库作为源代码管理的一部分进行引用,那么Build和Post-Build的其他操作将与通常使用Git存储库一样。

概要
本系列教程的主要思想是展示如何在AWS云平台上实施DevOps。
众所周知,DevOps的先决条件之一就是拥有一个好的版本控制存储库,在本教程中,我们已经了解了如何创建和配置CodeCommit存储库来存储项目工件以及如何与Jenkins集成。用于构建和部署的流行CI工具。