云计算的出现,大大缩减了初创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的用户名和密码。
#!/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,保存项目配置。
sudo usermod -G docker jenkins
visudo, add bellow
jenkins ALL=(ALL:ALL) NOPASSWD: ALL