持续部署之jenkins与gitlab(四)
代码上线流水发布操作
Pipeline中文意思为流水线之意,公司可能有很多项目,如果使用Jenkins自动构建成功后,开发需要一项一项点击,比较繁琐,所以出现pipeline流水化作业的代码测试管理,代码质量测试完毕之后,我们需将代码部署到测试环境或线上环境进行测试。
项目需求:在任意普通用户的家目录先将代码从gitlab中拉取下来,编写脚本,实现将代码自动拷贝至后端的Tomcat主机或其他web服务器。
新建项目
点击新建-->构建一个自由风格的软件项目-->点击OK
点击项目名称-->设置-->构建中选择执行远程脚本
重要提示:执行远程命令主要涉及的是权限问题,我们要搞明白Jenkins是以什么权限来执行命令的,我们现在在Jenkins服务器上,如果在www用户上执行命令,需要怎么做?
使用Jenkins用户将公钥发送给www用户
使用root用户将公钥发送给www用户,如果使用管理员命令则需sudo提权执行,因为web上默认执行命令的Jenkins用户
将Jenkins上的私钥发送给www用户,将root的私钥发送给www,并使用sudo提权,使得各个用户之间可以互通。
[www@node2 ~]$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLS+HnuGeiI8xQ3duMoJgdF7y4hXRt6FcXNDsYcQ6LaLT8JHN0EajscuMxjrNNKD+2OtTIzMY9/hkxIfH7TvUQRYfbNro6WTefnjmzyHaluG2gWvtL9zEJczxZhTAPLUa0ILkPzGvoiCC5em6wHWnqvlq7f/1BYSv4FyPhsrSiT3VlqoXB2ZvKRMOhPH5gd38EJIpgDAIPGJZpgLnEHpWJGIRcQBKZk8iwKSE+p38P5kggfbxc+epialKd69r7JjdHuZS/osBWUlklovUdGznlcFI+/1fKoXxL852MCZc/cleG40JDb/kDw1jId00Guza4UoK4G+74QdumilQD+RuP www@node2.alren.com
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFGANCXHKFQbKqxSJCENMg41oMoFZmiwOUSUWfCucQzb6/KRgUdhOjKaUavUZBhx5f7XXbIfpr3CHLJLyRxH7DQgSawmleH0gAkx9n2BaSpe9lKfY8h5qTB9T2nSW012Dsz4hK4n0AeNUvMfqcUO4/V4fVs+hOZCh/S3a5MH1rDkeekbguEnGeUPf7/6BzGpz6LEfR3U3Q4X9hvc9gDWYH4pbwz4xOHyrWADZRiwn76NNuLGkgvcUjl8jnpN02ADwyTlFFIAkgcmuxGg5Zaik3THyoksYoyJ30CPC1sFhVRlSR3eiXijpnTrnfGRLX21JKDRCM2TFoGTPd/WS6iZ3F root@node2.alren.com
[www@node2 ~]$
#编辑/etc/sudoer,注释tty和添加必要的权限
root ALL=(ALL) ALL
jenkins ALL=(ALL) NOPASSWD /usr/bin/ssh
在/home/www写一个测试脚本,检车脚本是否可执行成功
然后我们点击立即构建,查看构建结构
上诉脚本能自动执行,则可配置www用户可以远程ssh到web服务器,将家目录下的源码文件拷贝至web服务器的站点根目录实现自动部署。这会看的是你写脚本的能力。。。。
项目需求:当本地Jenkins代码测试成功之后自动联动部署代码至web服务器的站点根目录。一系列的动作需自动完成则需要安装Parameterized插件,系统管理-->管理插件-->可选插件 搜索Parameterized,如果插件在线安装不成功你懂得,可将下载好的插件解压至plugin目录下,将目录下的所有文件属组属主换成Jenkins,重启服务即可。
点击项目-->设置-->构建后操作-->trigger parameterized build on projects -->Add triggers-->点击保存
点击构建项目test-delpoy时自动联动auto-deloy,进行构建,可见第一个球闪烁完后,第二个球接着闪烁,完成自动构建
下载Pipline,它是一个更为方便观察项目的自动构建的图形化工具
系统管理-->插件管理-->搜索安装插件pipline
点击项目All后面的+号,新建一个视图,给视图取名,自定义一些选项。
pipeline视图效果更加直观: 红色代表构建失败,绿-蓝代表项目没有关联,两个都是绿的则表明项目相互关联,依次执行,可清晰看到上下情况和次数。
git提交操作触发Jenkins自动构建
Jenkins与gitlab集成后,实现的功能是开发写好代码push到gitlab上,push完成之后,jenkins自动帮我们立即构建,此方法一般使用在测试环境。
点击此项目并可触发项目联动结合脚本可实现自动上线部署,而往往这个功能只用在测试部署,上线部署手动完成较安全。
需安装GitlabHook Plugin插件
系统管理-->管理插件-->安装GitlabHook Plugin
完成后,需配置gitlab hook插件,使用openssl rand -hex 14命令自动生成随机码
点击项目-->设置-->构建后触发器
配置完成后则需在gitlab中配置webhooks
点击项目-->设置图标
Build Authorization Token Root Plugin 插件使用说明
https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin
示例:buildByToken/buildWithParameters?job=RevolutionTest&token=TacoTuesday&Type=Mexican
在gitlab上配置如下URL:格式如下:http://X.X.X.X:8080/buildByToken/build?job=项目名&token=随机数
配置完后,可点击Test按钮进行测试
Jenkins控制台输出: