使用 Bitbucket Pipeline 和 AWS CodeDeploy 自动部署 Angular 4 应用程序

Bhu*_*bar 4 deployment amazon-ec2 node.js aws-code-deploy bitbucket-pipelines

我有一个带有MongoDBNodeJSAngular 4应用程序。我一直在研究在亚马逊AWS EC2实例上自动部署我的应用程序。

我正在为我的项目使用BitBucket 存储库。阅读文章后,我遇到了Bitbucket PipelineAWS CodeDeploy。为了完成它,有许多场景和配置需要完成。一整天阅读所有文档后,我真的很困惑。

我想在将代码推送到特定分支时自动部署我的应用程序。

有人可以提供使用 Bitbucket Pipeline 和 AWS CodeDeploy 自动部署 Angular 4 (MEAN) 应用程序的分步指南吗?

如果您需要任何其他信息,请告诉我。谢谢你。

Bhu*_*bar 8

如何使用 Bitbucket Pipelines 和 AWS CodeDeploy 自动部署?

关于如何自动部署您的应用程序的分步指南: 

先决条件:   - BitBucket 存储库 - AWS 账户 - Putty

步骤 1. 创建新的 IAM 用户

登录您的 AWS 账户。访问https://console.aws.amazon.com/iam/

用户> 添加用户> 输入用户名> 复选框访问类型> 选择“自定义密码”单选> 取消选中“需要重置密码”> 单击下一步:权限> 直接附加现有策略> 搜索“s3”并选择 AmazonS3FullAccess


在此处输入图片说明

附加现有策略 - 搜索“codedeploy”并选择 AmazonEC2RoleforAWSCodeDeploy、AWSCodeDeployDeployerAccess、AWSCodeDeployFullAccess、AWSCodeDeployRole


在此处输入图片说明

下一步:查看 > 创建用户 -重要提示: 1. 下载 CSV 2. 记下访问密钥 ID 3. 记下秘密访问密钥


在此处输入图片说明

步骤 2. 为 CodeDeploy 应用程序创建角色

它是代码部署的服务角色。您分配给将在后续步骤中创建的代码部署应用程序的此服务角色。

登录您的 AWS 账户。访问https://console.aws.amazon.com/iam/

角色 > 创建角色 > 单击 AWS 服务 >


在此处输入图片说明

下面选择 CodeDeploy >


在此处输入图片说明

下一步:权限 > 下一步审查 > 输入角色名称(例如 CodeDeployServiceRole)> 输入描述(非强制性)> 创建角色。

步骤 3. 为 EC2 实例创建角色

这是分配给您将在后面的步骤中创建的 EC2 实例的角色。

登录您的 AWS 账户。访问https://console.aws.amazon.com/iam/

步骤 A. 为此角色创建策略。 策略 > 创建策略 > 选择创建您自己的策略 > 策略名称:“CodeDeploy-EC2-Permissions”> 描述:“分配给 EC2 实例的角色的策略”> 策略文档:将以下内容粘贴到输入框中。

{“版本”:“2012-10-17”,“声明”:[{“动作”:[“s3:Get*”,“s3:List*”],“效果”:“允许”,“资源” :“*”}]}


在此处输入图片说明

验证策略 > 创建策略。

步骤 B:创建角色 角色 > 创建角色 > AWS 服务 > EC2 > 选择您的用例 > 单击 EC2 > 下一步:权限 > 搜索“ec2”并选择您在步骤 A 中创建的“CodeDeploy-EC2-Permissions” >


在此处输入图片说明

下一步:审查 > 名称:“CodeDeploy-EC2-Instance-Profile”> 角色描述:“CodeDeploy-EC2-Instance-Profile”> 创建角色

步骤 4. 创建 EC2 实例。

登录您的 AWS 账户。服务 > EC2 > 启动实例 > Amazon Linux AMI(或根据需要选择)> 选择实例类型 > 下一步:配置实例详细信息 > IAM 角色 > 从下拉列表中选择您在步骤 3 步骤 B (CodeDeploy- EC2-Instance-Profile) >


在此处输入图片说明

下一步:添加存储 > 下一步:添加标签 > 添加标签 >(重要步骤!!记下您分配的名称和键)输入键:名称,值:staging-auto-deploy(或任何您喜欢的)>


在此处输入图片说明

下一步:配置安全组 > 选择现有安全组或新建 > 查看并启动 > 启动 > 选择现有密钥对或新建 > 启动实例 > 查看实例 > 记下 IPv4 公共 IP

步骤 5. 在 EC2 实例上安装 CodeDeploy 代理

在您的本地机器上打开 Putty > 输入您在第 4 步中获得的公共 IP > 端口 22 > 连接中 > SSH > 身份验证 > 用于身份验证的私钥文件> 浏览> 链接您在第 4 步中的实例的密钥对文件 > 打开 >登录方式:输入您的用户名

现在根据您的实例类型安装 CodeDeploy 代理

Linux 服务器:http : //docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-linux.html

Ubuntu 服务器:http : //docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html

Windows 服务器:http : //docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-windows.html

验证代理是否正在运行。


在此处输入图片说明

步骤 6. 在 BitBucket 上添加 CodeDeploy 插件

登录您的 BitBucket 账户集成 > 搜索 AWS CodeDeploy > 添加 AWS CodeDeploy


在此处输入图片说明

步骤 7. 在 AWS 上创建 CodeDeploy 应用程序

登录您的 AWS 账户。服务 > 搜索 CodeDeploy > 选择 CodeDeploy > 如果这是您第一次选择“立即开始”或创建应用程序 > 自定义部署 > 跳过演练 > 输入详细信息 > 应用程序名称:staging-deployment(重要:记下) 部署组名称: staging-deployment(重要:记下)选择“就地部署”环境配置> Amazon EC2 istance > Key: Name, Value: staging-auto-deploy(这些是你在创建实例时创建的键,值步骤 4) >


在此处输入图片说明

部署配置 > CodeDeployDefault.OneAtTime > 服务角色 ARN:选择您在第 2 步中创建的角色 (CodeDeployServiceRole) >


在此处输入图片说明

创建应用程序

步骤 8. 创建 S3 卷

登录您的 AWS 账户 > 服务 > S3 > 创建存储桶 > 存储桶名称:staging-deployment-bucket > 创建

步骤 9. 存储库的 CodeDeploy 设置

登录到您的存储库 > 设置 > CodeDeploy 设置 > 配置加载项 > 按照屏幕上的说明进行操作

步骤 A 登录您的 AWS 账户 > 服务 > IAM > 策略 > 创建策略 > 创建您自己的策略 >(此策略是为 bitbucket 代码部署插件创建的,使用它为 bitbucket 代码部署插件创建角色)策略名称:BitBucketCodeDeployAddOnPolicy 策略文档: 将以下内容粘贴到输入框中

{“版本”:“2012-10-17”,“声明”:[{“效果”:“允许”,“动作”:[“s3:ListAllMyBuckets”,“s3:PutObject”],“资源”:“ arn:aws:s3::: ”},{“Effect”: “Allow”,”Action”: [“codedeploy: ”],”Resource”: “*”}]}

创建策略

步骤 B 登录您的 AWS 账户 > 服务 > IAM > 角色 > 创建角色 > 另一个 AWS 账户 >


在此处输入图片说明

账户 ID:复制粘贴 bitbucket 代码上给出的 AWS 账户 ID 在屏幕说明上部署 > 选中需要外部 ID 复选框然后:复制粘贴 bitbucket 代码上给出的外部 ID 部署屏幕说明 >


在此处输入图片说明

在此处输入图片说明

下一步:权限 > 附加权限策略 > 搜索您在步骤 A 中创建的策略 > 下一步:查看 卷名称:“BitbucketCodeDeployAddon” > 创建角色 单击您刚刚创建的角色并复制角色 ARN 并将其粘贴到“您的角色 ARN”中在 bitbucket 代码部署设置页面 > 单击保存并继续 在下一页应用程序:选择您在步骤 7 中创建的 CodeDeploy 应用程序 > S3 存储桶:选择您在步骤 8 中创建的 S3 存储桶 > 保存

步骤 10. 启用 Bitbucket 管道

登录您的 BitBucket 帐户回购设置 > 管道 > 设置 > 启用启用管道

对于第 11、12、13 和 14 步,所需文件可在此 repo 的来源处获得参考:https : //bitbucket.org/bhushanTPL/bitbucket-pipeline-and-aws-codedeploy

步骤 11. 创建 bitbucket-pipelines.yml

复制 bitbucket-pipelines.yml 文件。(根据您的项目要求对此文件进行更改)将此文件添加到项目的根目录。

文档https : //confluence.atlassian.com/bitbucket/configure-bitbucket-pipelines-yml-792298910.html? _ga = 2.162970750.315484667.1509451697-1615374000.16574000.1674000.16697-1615374000.1674000.166978bucket- pipelines.150ml

步骤 12. 创建 codedeploy_deploy.py

复制 codedeploy_deploy.py 文件。将此文件添加到您项目的根目录中。

文档和来源https : //bitbucket.org/awslabs/aws-codedeploy-bitbucket-pipelines-python

步骤 13. 创建 appspec.yml 

转到此 repo 的来源:https : //bitbucket.org/bhushanTPL/bitbucket-pipeline-and-aws-codedeploy 并复制appspec.yml文件。(根据您的项目要求对此文件进行更改)将其添加到项目的根目录中。

文档http : //docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html

步骤 14. 创建脚本

在项目的根目录下创建脚本文件夹 

在项目根目录下的 scripts 文件夹中创建 startApp.sh 文件,该文件将在您的构建传输到 EC2 实例后运行命令。

步骤 15. 添加环境变量

登录你的 BitBucket 账户 > 你的 Repo Settings > Environment Variables 添加以下环境变量

AWS_SECRET_ACCESS_KEY:具有所需权限的用户的密钥。

AWS_ACCESS_KEY_ID:具有所需权限的用户的访问密钥。

AWS_DEFAULT_REGION:目标 AWS CodeDeploy 应用程序所在的区域。

APPLICATION_NAME:AWS CodeDeploy 应用程序的名称。

DEPLOYMENT_CONFIG:AWS CodeDeploy 部署配置 (CodeDeployDefault.OneAtATime|CodeDeployDefault.AllAtOnce|CodeDeployDefault.HalfAtATime|Custom)。

DEPLOYMENT_GROUP_NAME:应用程序中部署组的名称。

S3_BUCKET:存储要部署的源代码的 S3 Bucket 的名称。

文档和参考https : //bitbucket.org/awslabs/aws-codedeploy-bitbucket-pipelines-python


您现在已经配置了所有必需的步骤。现在,当您提交更改并将更改推送到您的分支时,自动部署过程开始。请注意,在以下 bitbucket-pipeline.yml 配置中,每当您将更改推送到“暂存”分支时,部署过程就会开始。


在此处输入图片说明

您可以通过单击存储库中的管道来检查管道的进度。


在此处输入图片说明

您可以查看部署相关日志。有关更多信息,请访问:http : //docs.aws.amazon.com/codedeploy/latest/userguide/deployments-view-logs.html

您可以从 AWS 监控部署,登录到您的 AWS 账户,服务 > CodeDeploy > 部署。