构建基于云平台的小型敏捷团队的持续集成和持续部署

云计算的出现,大大缩减了初创IT类公司的创业成本,云平台资源可以拿来即用,省去了前期的IDC运维成本,如今,硅谷或北京的初创公司除非是“疯了”才会购买IT基础设施,因为他们可以通过租用“公有云”的云计算服务来获取IT能力。比如你要搭建一套传统的互联网应用程序,传统的方案是选择IDC,采购硬件,设备上架,打通网络,安装系统,调试等,最终才开始上线应用。

今天就跟大家聊聊如何构建基于云平台的小型敏捷团队的持续集成和持续部署,用到的技术是Jenkins跟github集成,docker容器用作持续部署。

为什么使用云平台呢,定位是小型敏捷团队,其次是中小型创业公司,这样就省去了采购硬件,维护基础设施的成本,用云平台开箱即用,而且扩展性强,安全。

市场比较大的云厂商亚马逊、阿里巴巴、微软、谷歌、Salesforce和IBM。一个人意见,微软的Azure适合做windows的应用,google和salesforce都是被墙了,根本没法用,Bluemix刚落地中国,功能还不是很完善。剩下就是AWS和阿里云了。因为中国政府的原因,AWS在中国的运营其实算是一个灰色地带,很多功能都是国际版阉割后的。阿里云是接地气的中国云老大,虽然起步比较晚,但是服务已经很完善了,拥有包括国内外13个数据中心,外稳定性已经达到99.95%,所以我们推荐阿里云平台做公有云平台,购买一台ECS主机做Jenkins和Docker服务。

如何安装软件就不说了,咱们看一下如何创建一个github webhook的自动构建任务。

Jenkins采用v2.4版本

Docker采用1.12

代码托管到Github

一. Jenkins创建项目

1.1 创建一个Freestyle Project, 例如 jenkins-docker

 

1.2 Set workplace to /var/lib/jenkins/jobs/jenkins-docker/workplace

 

1.3 Add Github address: https://github.com/sangrealest/Jenkins_Docker_Ansible

测试的代码很简单,就是一个Dockerfile,拉取最新的nginx镜像,并将已经编译好的应用2048game添加到nginx跟目录。

在Credentials点击Add,选择Username with password, 写上登陆jenkins的用户名和密码。



1.4 在 Build Triggers, 勾选 “Build when a change is pushed to GitHub”


在Github个人主页上安装Github Plugin并添加你的Jenkins server的webhook地址:比如我的Jenkins地址是mywebsite.com:8080,这里要写的地址就应该是http://mywebsite.com:8080/github-webhook



1.5 在 Build->Execute shell, 用以下的 shell script:


#!/bin/sh                                                                                                                                                            
echo '>>> Get old container id'
CID=$(docker ps | grep "jenkins-docker" | awk '{print $1}')
echo $CID
sudo /usr/bin/docker build -t jenkins-docker /var/lib/jenkins/jobs/jenkins-docker/workspace | tee /var/lib/jenkins/jobs/jenkins-docker/workspace/Docker_build_result.log
echo '>>> Stopping old container'
if [ "$CID" != "" ];then
sudo  /usr/bin/docker stop $CID
fi
echo '>>> Restarting docker'
sudo service docker restart
sleep 5
   
echo '>>> Starting new container'
sudo /usr/bin/docker run -p 3000:80 -d jenkins-docker


最后点击Save,保存项目配置。


1.6 配置jenkins用户


因为jenkins service是用jenkins用户启动的,所有要执行docker相关命令需要将jenkins加入到docker group,赋予jenkins sudo 权限不需要密码


sudo usermod -G docker jenkins
visudo, add bellow 
jenkins ALL=(ALL:ALL) NOPASSWD: ALL


这时候可以更新一下Github Project下面的文件并且push一下,查看jenkins 的output 已经看到jenkins自动捕捉到了此次push,并且开始构建任务:



等待几秒钟,docker重新部署容器,你就可以访问最新的应用了,一款2048的应用就诞生了:



其实这一系列动作Openshift的s2i功能已经全部实现了,大家有兴趣可以研究以下Openshift,采用了google的Kubernetes做编排,底层使用docker容器,上层添加了高可用,持续集成,持续部署,监控,健康检查等功能,相信这款产品将来在中国会有不错的前景。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值