如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

AWS DevOps – 配合 Jenkins 和 CodeDeploy 实现代码自动化部署

  • 2019-10-31
  • 本文字数:2822 字

    阅读完需:约 9 分钟

AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署

作为 DevOps 和微服务的深入践行者,Amazon 在内部积累了许多持续集成、交付和部署的自动化工具和平台。本文主要介绍如何在 AWS 云上,使用 CodeDeploy,并配合 Jenkins 来构建持续集成/持续交付的管道,自动化代码部署和版本迭代。


在查看本文之前,建议大家先阅读一下代闻老师写的关于 CodeDeploy 的文章。


https://aws.amazon.com/cn/blogs/china/getting-started-with-codedeploy/

一、创建 EC2 实例并安装 CodeDeploy Agent

创建 Amazon EC2 实例,选择实例类型和添加存储。



在“高级详细信息”里面输入启动脚本



#!/bin/bash


yum -y update


yum install -y ruby


yum install -y aws-cli


cd /home/ec2-user


aws s3 cp s3://aws-codedeploy-cn-north-1/latest/install . --region cn-north-1


chmod +x ./install


./install auto


EC2 启动成功后,使用 SSH 到该 EC2,使用如下命令检验 Agent 是否工作正常。


sudo service codedeploy-agent status


Result: The AWS CodeDeploy agent is running as PID 3523

二、创建应用程序负载均衡(ALB)


创建 Target Group


三、创建 CodeDeploy 环境

点击“创建应用程序”



输入应用程序名称,和部署组的名称。CodeDeoploy 支持两种部署方式,“就地部署”和“蓝绿部署”,更多关于部署类型请参考:


https://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/applications-create-in-place.html


环境配置可以选择 Auto Scaling 组、Amazon EC2 实例,或者本地实例。



该文档使用的是 Amazon EC2 实例方式,通过 Tag 指标相对应的 EC2 实例。



启用负载均衡,选择之前创建的 Target Group。



配置回滚的策略,比如选择“部署失败时回滚”。可以根据情况添加触发器,并订阅 Amazon SNS 进消息通知,也可以配置 CloudWatch 警报,当指标超过或者低于 CloudWatch 中设定的阈值就可以自动触发或者停止部署。



CodeDeploy 环境创建成功


四、使用 Github 托管源代码,并配置 webhook 自动触发

首先进入自己的 Github 地址,点击https://github.com/settings/tokens,生成 GitHub token,这个 token 用于 jenkins 访问 GitHub。



为需要做 CI/CD 的 GitHub 创建 hook,实现代码更新自动通知 Jenkins,Payload URL 设置 Jenkins Server 的地址,默认 Jenkins 监听 8080 端口。记录下生成的 token 字符串,比如: bf6adc27311a39ad0b5c9a63xxxxxxxxxxxxxx


创建一个新的 repository



创建本次环境所需要的 Git 仓库,比如名为 AWS-BJS-CodeDeploy-CICD-Jenkins。点击“Settings”配置 webhooks。



点击“Add Webhooks”



在 Payload URL,输入 http://EC2 公网 IP 地址/github-wekhook/,如下图所示:


五、部署 Jenkins,并安装 CodeDeploy 插件

安装如何脚本安装 Jenkins,默认 Java 的环境是 1.7 的,可以先升级到 Java 1.8 版本。


sudo -s


java –version


yum install java-1.8.0


yum remove java-1.7.0-openjdk


wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo


rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key


yum install jenkins


chkconfig jenkins on


service jenkins start


//查看Jenkins默认密码


cat /var/lib/jenkins/secrets/initialAdminPassword


在浏览器输入输入 EC2 的公网 IP 地址(最好绑定一个弹性 EIP),比如 54.223.215.xx:8080,然后出现如下界面,输入上面得到的默认密码。




创建用户名和密码,就到如下界面,这个时候 Jenkins 就可以进行配置了。



进入系统配置



输入 Jenkins URL,点击“Add”添加 Jenkins



输入 Github 获取的 Access Token,点击“添加”。



点击“Test Connection”,没有报错说明配置成功。



添加管理插件



添加 AWS CodeDeploy 的插件,点击“Install without restart”



新建一 Jenkins 个项目,点击“Create a new project”



配置 Github 项目的地址,源代码管理选择 Git 方式。



触发构建,选择 Github hook trigger for GITScm polling



选择“Post-build Actions”,输入 CodeDeploy 相关信息,区域选择 AWS 中国(北京)区域 cn-north-1



认证方式可以输入 AWS Access Key 和 Security Key,如果是生产环境建议使用临时的 credentials。



创建完成之后可以看到如下界面


六、测试

测试 PHP 代码下载地址


https://github.com/TerrificMao/AWS-BJS-CodeDeploy-CICD-Jenkins


当代码部署成功时,输入 EC2 公网 IP 地址,可以看到如下界面,此时为 V1 版本。



此时,开发工程师在本地修改代码



Github 本地客户端会自动识别到代码变更,输入描述内容以及关键词,点击“commit to master”,再点击右上方的“Sync”,代码就会自动推送到 Github 中。



可以看到当代码提交到 Github 之后,Jenkins 自动触发,拉取代码,进行构建。



看到构建成功,自动打包,并把打完的 Zip 包自动上传到指定的 S3 存储桶上。



打开 CodeDeploy 界面,发现自动触发了一次代码部署。



部署正在进行中



可以看到部署成功了,如果失败就回滚。



点击详情可以看到 CodeDeploy 自动部署的过程。



刷新浏览器,发现代码自动化部署成功,替换成了 V2 版本。



由于前面我们部署了负载均衡 ALB,可以复制 ALB 的 DNS 名称到浏览器



发现用负载均衡 ALB 访问也是成功的。



上一台 EC2 在可用区 b,刷新负载均衡器,会将流量自动分发到另一台机器上,此时在可用区 a 了。



到此,一个比较简单的由 ALB(负载均衡) + EC2(服务器) + Auto Scaling(自动扩展)组成架构,使用 AWS CodeDeploy,再配合 Jenkins 可以实现代码的自动化部署和版本迭代。



当然,AWS 在 DevOps 方面提供的能力远远不止于此,AWS 在开发、构建、测试、部署、搭建、监控、运维等各个维度都提供了托管的服务,可以让用户轻松完成持续部署、持续集成方面的自动化。



最后,如果您想了解容器和 Lambda 方面的自动化部署方案,可以参考:


(1)基于 Amazon EC2 Container Service 的持续集成/持续交付解决方案


https://aws.amazon.com/cn/blogs/china/continuous-integrationcontinuous-delivery-solution-based-on-aws-ecs/


(2)如何使用 AWS CodePipeline,AWS CodeBuild 与 AWS CloudFormation 实现 Amazon ECS 上的持续集成持续部署解决方案:


https://aws.amazon.com/cn/blogs/china/how-to-implement-the-continuous-integrated-continuous-deployment-solution-on-amazon-ecs-using-aws-codepipelineaws-codebuild-and-aws-cloudformation/


(3)AWS Lambda 配合 Jenkins 实现自动化持续部署


https://aws.amazon.com/cn/blogs/china/aws-lambda-jenkins-automatically-deployment/


作者介绍



毛郸榕,AWS 解决方案架构师。负责基于 AWS 的云计算方案的架构设计,同时致力于 AWS 云服务在国内和全球的应用和推广,毕业于北京航空航天大学云计算专业,硕士,毕业后直接加入 AWS 中国。在大规模并发后台架构、物联网、DevOps 以及 Serverless 无服务器架构等领域有着广泛的设计与实践经验。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/aws-devops-jenkins-and-codedeploy/


2019-10-31 08:002243

评论

发布
暂无评论
发现更多内容

超前探展!2025 云栖大会朋友圈晒图必备

阿里巴巴云原生

深入研究:京东工业商品详情API详解

tbapi

京东工业平台API 京东工业数据采集 京东工业商品详情API 京东工业数据分析

中昊芯英入选信通院“2025年算力经济发展典型案例”

科技热闻

多客云 Ai 短视频批量剪辑矩阵系统:高效创作与智能管理的一体化解决方案

微擎应用市场

嘉为蓝鲸2025OpsPilot智能运维支撑平台V3.7:分块界面可视化,重构问答对关联提升运维知识效率

嘉为蓝鲸

知识管理 智能运维 OpsPilot 一体化智能运维 智能运维支撑平台

JoyAgent-DataAgent可直接使用的智能问数和诊断分析智能体

京东科技开发者

邀您参加丨云栖大会中企出海技术分论坛

阿里巴巴云原生

阿里云 云原生

CVE-2025-6018与CVE-2025-6019:Linux PAM本地权限提升漏洞深度解析

qife122

权限提升 CVE-2025-6018

六项第一!百度文库再获国家工信安全中心认证,持续领跑智能PPT行业

科技热闻

坐标山东青岛,12~20K面试强度

王中阳Go

Go 面试 后端

第柒在线科技通过“2025国家科技型中小企业”认定

第七在线

撒钱岛小游戏管理系统:私域流量变现新选择,趣味与收益双赢

微擎应用市场

Web自动化测试智能体详解

测试人

人工智能 软件测试

深入研究:京东图片搜索相似商品API详解

tbapi

京东图片搜索接口 京东拍立淘API 京东图片搜索API 京东图片API 京东图搜API

喵喵估价回收管理系统:一站式闲置回收解决方案

微擎应用市场

MyEMS 进阶应用:从单厂能耗管理到集团跨区域能源数据协同分析

开源能源管理系统

开源 开源能源管理系统

对接文档:快递鸟取件码API,实现物流末端服务自动化

快递鸟

从 AI 编程到小程序容器:外卖 App 开发实战之 App Builder 技术选型指南

xuyinyin

文心快码入选2025人工智能AI4SE“银弹”标杆案例

Comate编码助手

AI辅助编程 AI 编程 文心快码Zulu 文心快码3.5S

Playwright极速UI自动化实战指南

测试人

人工智能 软件测试

嘉为蓝鲸CPack制品管理平台:容量管控减少无效存储,让制品管理更轻松降本提效

嘉为蓝鲸

智能告警 存储管理 制品库 制品管理 制品仓库

建筑行业能源管理破局:MyEMS 打造商业楼宇 “能耗可视化 + 智能调控” 方案

开源能源管理系统

开源 开源能源管理系统

嘉为蓝鲸2025应用发布中心V6.2:国产化数据库适配+Function-Call技术,赋能云原生

嘉为蓝鲸

云原生 应用发布 智能运维 应用发布中心 国产化适配

海之心医院挂号系统:中小型医疗机构的智慧诊疗管理解决方案

微擎应用市场

行稳、致远 | 技术驱动下的思考感悟

京东科技开发者

连接两个战场:本土舆情监测与海外社交媒体监控的协同

沃观Wovision

社交媒体 沃观Wovision 舆情监测系统 海外舆情监测

深入解析MS12-020关键漏洞CVE-2012-0002:远程桌面协议的安全风险与缓解方案

qife122

网络安全 系统加固

一场 MCP 生态的变革——详解 OpenTiny NEXT 逆向思维的技术创新

OpenTiny社区

AI 前端 OpenTiny MCP

JDK从8升级到21的问题集

京东科技开发者

Playwright自动化测试框架与AI智能体应用

测试人

告别数据越权烦恼,嘉为蓝鲸CMeas研发效能洞察平台靠数据行权限隔离,保障项目数据安全

嘉为蓝鲸

DevOps 研发效能 研发效能度量 数据管控 研发效能洞察平台

AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章