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

Auto Deploy Angular 4 App using Bitbucket Pipeline and AWS CodeDeploy

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

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

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

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

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

这是您要查找的大量信息,但总的来说,以下是您需要的信息:

  1. 在 aws 上设置 codedeploy:这将涉及配置 codedeploy 应用程序、具有正确权限的正确部署组以及环境变量(EC2 标签等),具体取决于您的环境。此外,您还需要在 EC2 实例上安装必要的 codedeploy 二进制文件。

  2. 设置Bitbucket管道:配置正确的bitbucket-pipelines.yml、appspec.py、boto脚本等。看看https://bitbucket.org/awslabs/aws-codedeploy-bitbucket-pipelines-python?_ga=2.61586476.1615273408.1509882420-1278037437.1495556069

我以上述方式使用 bitbucket 管道在 AWS 上的 Angular、Nodejs、Python 中自动部署多个存储库。

获得更多帮助的更好方法是提出更具体的问题,或者如果您遇到某个特定问题。

您只需将管道 YML 文件配置为仅部署在该分支上。他们有一个你可以添加的部署配置,尽管它仍处于 Alpha 阶段。对于当前的管道使用,你会做这样的事情:

pipelines:
  branches:
    master:
    - step:
      script: # Modify the commands below to build your repository.
      - export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
      - export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
      - export AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION
      - export S3_BUCKET=$S3_BUCKET
      - export DEPLOYMENT_GROUP_NAME=$DEPLOYMENT_GROUP_NAME
      - export DEPLOYMENT_CONFIG=$DEPLOYMENT_CONFIG
      - export APPLICATION_NAME=$APPLICATION_NAME
      - echo "Starting pipelines for MASTER"
      - chmod +x gradlew
      - ./gradlew build
      - zip -r tmp/enterpriseconfigserver.zip build/libs/enterpriseconfigserver-0.0.1-SNAPSHOT.jar appspec.yml buildspec.yml
      - python codedeploy_deploy.py

您显然必须进行调整以适合您的应用,但请务必将您的变量添加到管道中的设置并导出它们,以便 docker 图像可以使用它们。我建议创建一个自定义映像,其中包含 AWSCLI、BOTO 和您需要的所有好东西,这样您就不需要在每次构建时都等待它们安装。

这也可能有用: https://confluence.atlassian.com/bitbucket/using-artifacts-in-steps-935389074.html

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

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

先决条件: - 比特桶存储库 - AWS 账户 - 腻子

步骤 1. 创建新的 IAM 用户

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

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


附加现有策略-搜索“codedeploy”和selectAmazonEC2RoleforAWSCodeDeploy、AWSCodeDeployDeployerAccess、AWSCodeDeployFullAccess、AWSCodeDeployRole


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


第 2 步。为 CodeDeploy 应用程序创建角色

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

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

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


低于 Select CodeDeploy >


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

第 3 步。为 EC2 实例创建角色

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

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

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

{“Version”: “2012–10–17”,“Statement”: [{“Action”: [“s3:Get*”,“s3:List*”],“Effect”: “Allow”,“Resource”: “*”}]}


验证策略 > 创建策略。

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


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

第 4 步。创建 EC2 实例。

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


下一步:添加存储 > 下一步:添加标签 > 添加标签 >(重要步骤!!记下您分配的名称和键)输入键:名称,值:暂存自动部署(或您喜欢的任何内容)>


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

第 5 步。在 EC2 实例上安装 CodeDeploy 代理

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

Now install CodeDeploy agent as per your instance type

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

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

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

Verify that agent is running.


第 6 步。在 BitBucket 上添加 CodeDeploy 插件

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


第 7 步。在 AWS 上创建 CodeDeploy 应用程序

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


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


创建应用程序

第 8 步。创建 S3 卷

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

第 9 步。存储库的 CodeDeploy 设置

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

步骤 A 登录到您的 AWS 帐户 > 服务 > IAM > 策略 > 创建策略 > 创建您自己的策略 >(此策略是为 bitbucket code deploy addon 创建的,使用它来为 bitbucket codeDeploy addon 创建角色) 政策名称:BitBucketCodeDeployAddOnPolicy 政策文件:将以下内容粘贴到输入框

{“Version”: “2012–10–17”,”Statement”: [{“Effect”: “Allow”,”Action”: [“s3:ListAllMyBuckets”,”s3:PutObject”],”Resource”: “arn:aws:s3:::”},{“Effect”: “Allow”,”Action”: [“codedeploy:”],”Resource”: “*”}]}

创建策略

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


账户 ID:复制粘贴 bitbucket codeDeploy on screen 指令中给出的 AWS 账户 ID > 勾选需要外部 ID 复选框然后:复制粘贴 bitbucket codeDeploy on screen 指令中给出的外部 ID >


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

第 10 步。启用 Bitbucket 管道

登录到您的 BitBucket 帐户 Repo 设置 > 管道 > 设置 > 打开启用管道

对于第 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.1508921669#Configurebitbucket-pipelines.yml-ci_imageimage(optional)

第 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 步。创建脚本

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

Create startApp.sh file in the scripts folder in root of your projects, which will run commands after your build is transferred to your EC2 instance.

第 15 步。添加环境变量

登录到您的 BitBucket 帐户 > 您的 Repo 设置 > 环境变量 添加以下环境变量

AWS_SECRET_ACCESS_KEY: Secret key for a user with the required permissions.

AWS_ACCESS_KEY_ID: Access key for a user with the required permissions.

AWS_DEFAULT_REGION: Region where the target AWS CodeDeploy application is.

APPLICATION_NAME: Name of AWS CodeDeploy application.

DEPLOYMENT_CONFIG: AWS CodeDeploy Deployment Configuration (CodeDeployDefault.OneAtATime|CodeDeployDefault.AllAtOnce|CodeDeployDefault.HalfAtATime|Custom).

DEPLOYMENT_GROUP_NAME: Name of the Deployment group in the application.

S3_BUCKET: Name of the S3 Bucket where source code to be deployed is stored.

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


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


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


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

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