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

[经验分享] 持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]

[复制链接]

尚未签到

发表于 2018-1-7 17:29:15 | 显示全部楼层 |阅读模式
一、代码流水线管理
  Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目。如果使用jenkins构建完成后,开发构建项目需要一项一项点击,比较麻烦。所以出现pipeline名词。
  代码质量检查完毕之后,我们需要将代码部署到测试环境上去,进行自动化测试
  新建部署代码项目
  点击新建
DSC0000.png

DSC0001.png

  这里只需要写一下描述
DSC0002.png

  执行Shell脚本
DSC0003.png

  温馨提示:执行命令主要涉及的是权限问题,我们要搞明白,jenkins是以什么权限来执行命令的。那么问题来了,我们现在192.168.56.11上,如果在想192.168.56.12上执行命令。需要怎么做呢?
  我们做无秘钥有2种分案:
  1、使用jenkins用户将秘钥分发给192.168.56.12上
  2、使用root用户将秘钥分发给192.168.56.12上,如果使用root用户还要进行visudo授权。因为Web上默认执行命令的用户是jenkins
  1.我们使用root做密码验证
  #这里我们的key已经做好,如果没做可以直接 ssh-keygen -t ras 来生成秘钥
  我们将192.168.56.11上的公钥复制到192.168.56.12上
  

[iyunv@linux-node1 ~]# cat .ssh/id_rsa.pub  
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChVQufrGwqP5dkzIU4ZwXCjRuSvMVGN5lJdvL/QFckmlVphWMsQw06VsPhgcI1NDjGbKOh5pbjrylyJUCig5YIJ1xuMOZ2YAK32SceMxnVhEb/G4wNb9VMsGQ/Vs4CxrU1HdATktH9zDAV4Qz81x2POYJW5B5LAvwZ4owqnIpZ7o3ya6xBxEvCIMSVtD17oKrNqAphsg+e68KvRexiNCEbCbRGGq3bKevgiDsWpSGnCYsJC0+cSrUxuzEO3G6AqGI/qR3nOeg91rOsoAP3FpFjBKgb/sXggkwwjmGIqFXJrUG+XmczeF4kG/rUrNbdy84e5RyHoIS3XKnJuRjTxHyD root@linux-node1
  

  
[iyunv@linux-node2 ~]# vim .ssh/authorized_keys
  
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChVQufrGwqP5dkzIU4ZwXCjRuSvMVGN5lJdvL/QFckmlVphWMsQw06VsPhgcI1NDjGbKOh5pbjrylyJUCig5YIJ1xuMOZ2YAK32SceMxnVhEb/G4wNb9VMsGQ/Vs4CxrU1HdATktH9zDAV4Qz81x2POYJW5B5LAvwZ4owqnIpZ7o3ya6xBxEvCIMSVtD17oKrNqAphsg+e68KvRexiNCEbCbRGGq3bKevgiDsWpSGnCYsJC0+cSrUxuzEO3G6AqGI/qR3nOeg91rOsoAP3FpFjBKgb/sXggkwwjmGIqFXJrUG+XmczeF4kG/rUrNbdy84e5RyHoIS3XKnJuRjTxHyD root@linux-node1
  

  
[iyunv@linux-node1 ~]# ssh 192.168.56.12
  
The authenticity of host '192.168.56.12 (192.168.56.12)' can't be established.
  
ECDSA key fingerprint is b5:74:8f:f1:03:2d:cb:7d:01:28:30:12:34:9c:35:8c.
  
Are you sure you want to continue connecting (yes/no)? yes
  
Warning: Permanently added '192.168.56.12' (ECDSA) to the list of known hosts.
  
Last login: Sat Dec 17 02:14:31 2016 from 192.168.56.1
  
[iyunv@linux-node2 ~]# ll
  
total 4
  
-rw-------. 1 root root 1021 Dec 13 05:56 anaconda-ks.cfg
  

  
#现在SSH连接就不需要密码了
  

  
授权jenkins用户,使用visudo或者编辑配置文件/etc/sudoers
  
[iyunv@linux-node1 ~]# vim /etc/sudoers
  92 jenkins ALL=(ALL)       NOPASSWD:/usr/bin/ssh
  
#jenkins授权所有主机,不需要密码执行ssh。切记不要授权ALL
  

  我们在192.168.56.12上写一个简单shell脚本,检测是否可以执行成功。正式环境可以写一个自动化部署的脚本
  

[iyunv@linux-node2 ~]# echo "echo "hello word"" >demo.sh  
[iyunv@linux-node2 ~]# chmod +x demo.sh
  
[iyunv@linux-node2 ~]# ll demo.sh
  
-rwxr-xr-x 1 root root 16 Dec 17 02:24 demo.sh
  


  • 1
  • 2
  • 3
  • 4


  • 1
  • 2
  • 3
  • 4
  jenkins编写执行脚本
DSC0004.png

  然后我们点击立即构建
DSC0005.png

  成功!
DSC0006.png

  现在我们要将代码质量管理和测试部署连接起来。
  这时候就用到了Git钩子
  我们需要安装jenkins插件parameterized
DSC0007.png

  我们选择demo-deploy
DSC0008.png

  再次点击项目设置的时候就会出现Trigger parameterized build on other projects
DSC0009.png

  提示:Projects to build是为构建设置一个项目。例如我们想构建完代码项目后执行测试的,这里就填写测试的就可以。
DSC00010.png

  最后点击保存,点击构建。我们查看效果
DSC00011.png

DSC00012.png

  #这样我们每次点击demo-deploy 它就会在构建完成之后在对auto-deploy进行构建
  下载pipeline。这样只需要构建一个项目,就会帮我们完成所有相关项目
  搜索插件pipeline
DSC00013.png

  等待安装完成
DSC00014.png

  我们点击首页+号,新建一个试图
DSC00015.png

  点击OK
DSC00016.png

  pipeline 配置
DSC00017.png

DSC00018.png

  然后我们点击保存
  pipeline视图如下:
DSC00019.png

  点击Run
DSC00020.png

  这样就先代码质量进行管理,然后就开始部署了
  构建成功后:
DSC00021.png

  这样我们下次想看pipeline视图的时候,点击上面的demo-pipeline即可
DSC00022.png


二、Jenkins + gitlab集成
  Jenkins + gitlab集成后,实现的功能是 开发写好代码提交至gitlab上,当时开始push到gitlab上之后,jenkins自动帮我们立即构建
  这个项目我们需要安装一个gitlab钩子的脚本
  提示: jenkins不论想实现什么功能,都需要安装插件!!
DSC00023.png

  安装完插件之后我们就开始配置钩子脚本
DSC00024.png

  这里需要我们在服务器里面写一个令牌,在jenkins上也写一个令牌。这两个可以连接到一起就可以。
  #因为用到了令牌我们还需要在安装一个插件,否则将无法使用。因为令牌是需要登录之后才会有,所以需要有一个管理的插件
  插件搜索:Build Aut
DSC00025.png

  为了令牌的安全性,我们使用openssl生成一个
  

[iyunv@linux-node1 ~]# openssl rand -hex 10  
0a37c6d7ba1fe3472e26
  


  • 1
  • 2


  • 1
  • 2
DSC00026.png

  然后我们点击保存即可
  因为jenkins上也提示我们需要在gitlab上添加钩子脚本
  点击我们创建的项目
DSC00027.png

  选中Webhooks
DSC00028.png

  Build Authorization Token Root Plugin 插件使用说明
  https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin
  使用Build插件后,url如下:
  

http://192.168.56.11:8080/buildByToken/build?job=auto-deploy&token=0a37c6d7ba1fe3472e26  
auto-deploy=项目名称(构建时的项目名称)
  
0a37c6d7ba1fe3472e26=jenkins填写的令牌
  

DSC00029.png

  然后点击Add Webhook
DSC00030.png

  下方就会出现我们这个选项,我们点击Test进行测试
DSC00031.png

  测试结果
DSC00032.png

  向git服务器提交代码,验证是否可以自动部署:
  

[iyunv@linux-node1 ~]# echo "Build Token Root Plugin" > index.html  
[iyunv@linux-node1 ~]# git add index.html [iyunv@saltmaster ~/weather]# git commit -m "text"
  
[iyunv@linux-node1 ~]# git push origin master
  


  • 1
  • 2
  • 3


  • 1
  • 2
  • 3
  jenkins服务器的日志记录:
  

[iyunv@linux-node1 ~]# tail -f /var/log/jenkins/jenkins.log  


  • 1


  • 1
DSC00033.png

  jenkins项目构建:
DSC00034.png

  访问web界面验证代码是否最新的:
  jenkins控制台输出信息:

运维网声明 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-432651-1-1.html 上篇帖子: jenkins插件 build timeout和build timestamp 下篇帖子: Could not find JSON in http://updates.jenkins-ci.org/update-center.json?id=defau
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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