设为首页 收藏本站
查看: 2929|回复: 0

[经验分享] 一步一步用jenkins,ansible,supervisor打造一个web构建发布系统

[复制链接]

尚未签到

发表于 2015-11-25 15:46:44 | 显示全部楼层 |阅读模式
  新blog地址:http://hengyunabc.github.io/deploy-system-build-with-jenkins-ansible-supervisor/
  一步一步用jenkins,ansible,supervisor打造一个web构建发布系统。
  本来应该还有gitlab这一环节的,但是感觉加上,内容会增加很多。所以直接用github上的spring-mvc-showcase项目来做演示。
  https://github.com/spring-projects/spring-mvc-showcase
  本文的环境用docker来构建。当然也可以任意linux环境下搭建。
  如果没有安装docker,可以参考官方的文档:

https://docs.docker.com/installation/ubuntulinux/#ubuntu-trusty-1404-lts-64-bit
  下面将要介绍的完整流程是:

  • github作为源代码仓库

    • jenkins做为打包服务器,Web控制服务器
    • ansible把war包,发布到远程机器

      • 安装python-pip
      • 用pip安装supervisor
      • 安装jdk
      • 下载,部署tomcat
      • 把tomcat交由supervisor托管
      • 把jenkins生成的war包发布到远程服务器上
      • supervisor启动tomcat
      • 在http端口等待tomcat启动成功

    • supervisor托管app进程,提供一个web界面可以查看进程状态,日志,控制重启等。

  在文章的最后,会给出一个完整的docker镜像,大家可以自己运行查看实际效果。
安装jenkins

  • 先用docker来启动一个名为“jenkins”的容器:


sudo docker run -i -t -p 8080:8080 -p 8101:8101 -p 9001:9001 --name='jenkins' ubuntu /bin/bash
  8080是jenkins的端口,8101是spring-mvc-showcase的端口,9001是supervisor的web界面端口
  执行完之后,会得到一个container的shell。接着在这个shell里安装其它组件。

  • 安装open jdk 和 git:


sudo apt-get update
sudo apt-get install openjdk-7-jdk git

  • 下载配置tomcat:


apt-get install wget
mkdir /opt/jenkins
cd /opt/jenkins
wget http://apache.fayea.com/tomcat/tomcat-8/v8.0.18/bin/apache-tomcat-8.0.18.tar.gz
tar xzf apache-tomcat-8.0.18.tar.gz


  • 安装jenkins:


cd /opt/jenkins/apache-tomcat-8.0.18/webapps
wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
rm -rf ROOT*
mv jenkins.war ROOT.war

  • 启动jenkins:


/opt/jenkins/apache-tomcat-8.0.18/bin/startup.sh
  然后在本机用浏览器访问:http://localhost:8080/ ,可以看到jenkins的界面了。
配置jenkins
安装git插件
  安装git插件:

https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin
  在“系统管理”,“插件管理”,“可选插件”列表里,搜索“Git Plugin”,这样比较快可以找到。
  因为jenkins用google来检查网络的连通性,所以可能在开始安装插件时会卡住一段时间。
配置maven, java
  打开 http://localhost:8080/configure,

在jenkins的系统配置里,可以找到maven,git,java相关的配置,只要勾选了,在开时执行job时,会自动下载。

DSC0000.png
  JDK可以选择刚才安装好的openjdk,也可以选择自动安装oracle jdk。

DSC0001.png
  Git会自动配置好。
配置ssh服务
  安装sshd服务:


sudo apt-get install openssh-server sshpass
  编辑

vi /etc/ssh/sshd_config




PermitRootLogin without-password
  改为:


PermitRootLogin yes
  重启ssh服务:


sudo /etc/init.d/ssh restart
  为root用户配置密码,设置为12345:


passwd
  最后尝试登陆下:


ssh root@127.0.0.1

安装ansible
  在jenkins这个container里,继续安装ansible,用来做远程发布用。
  先安装pip,再用pip安装ansible:


sudo apt-get install python-pip python-dev build-essential git
sudo pip install ansible

配置ansible playbook
  把自动发布的ansible playbook clone到本地:
  https://github.com/hengyunabc/jenkins-ansible-supervisor-deploy


mkdir -p /opt/ansible
cd /opt/ansible
git clone https://github.com/hengyunabc/jenkins-ansible-supervisor-deploy

在jenkins上建立deploy job

  •   新建一个maven的项目/job,名为spring-mvc-showcase

    DSC0002.png

  •   在配置页面里,勾选“参数化构建过程”,再依次增加“String”类型的参数

DSC0003.png
  共有这些参数:


    app    要发布的app的名字
http_port     tomcat的http端口
https_port  tomcat的https端口
server_port tomcat的server port
JAVA_OPTS    tomcat启动的Java参数
deploy_path   tomcat的目录
target_host  要发布到哪台机器
war_path       jenkins生成的war包的目录

  • “源码管理”,选择Git,再填入代码地址
  https://github.com/spring-projects/spring-mvc-showcase.git
DSC0004.png

  • 在“Post Steps”里,增加调用ansible playbook的shell命令

    DSC0005.png


cd /opt/ansible/jenkins-ansible-supervisor-deploy
ansible-playbook -i hosts site.yml --verbose --extra-vars "target_host=$target_host app=$app http_port=$http_port https_port=$https_port server_port=$server_port deploy_path=$deploy_path JAVA_HOME=/usr JAVA_OPTS=$JAVA_OPTS deploy_war_path=$WORKSPACE/$war_path"
  最后,保存。
测试构建
  一切都配置好之后,可以在jenkins界面上,在左边,选择“Build with Parameters”,“开始”来构建项目了。
  如果构建成功的话,就可以打开 http://localhost:8101 ,就可以看到spring-mvc-showcase的界面了。

  打开 http://localhost:9001 可以看到superviosr的控制网页,可以查看tomcat进程的状态,重启,查看日志等。

  如果想要发布到其它机器上的话,只要在
  
/opt/ansible/jenkins-ansible-supervisor-deploy/hosts  


  文件里增加相应的host配置就可以了。
其它的一些东东
  如果提示


to use the 'ssh' connection type with passwords, you must install the sshpass program
  则安装:


sudo apt-get install sshpass

演示的docker image
  如果只是想查看实际运行效果,可以直接把 hengyunabc/jenkins-ansible-supervisor 这个image拉下来,运行即可。


docker run -it -p 8080:8080 -p 8101:8101 -p 9001:9001 --name='jenkins' hengyunabc/jenkins-ansible-supervisor

总结

  • jenkins提供了丰富的插件,可以定制自己的打包这过程,并可以提供完善的权限控制
  • ansible可以轻松实现远程部署,配置环境等工作,轻量简洁,功能强大
  • supervisor托管了tomcat进程,提供了web控制界面,所有运行的程序一目了然,很好用

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-143542-1-1.html 上篇帖子: jenkins部署war包到容器(tomcat) 下篇帖子: centos安装Jenkins
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表