代码上线流水发布操做node
Pipeline中文意思为流水线之意,公司可能有不少项目,若是使用Jenkins自动构建成功后,开发须要一项一项点击,比较繁琐,因此出现pipeline流水化做业的代码测试管理,代码质量测试完毕以后,咱们需将代码部署到测试环境或线上环境进行测试。 git
项目需求:在任意普通用户的家目录先将代码从gitlab中拉取下来,编写脚本,实现将代码自动拷贝至后端的Tomcat主机或其余web服务器。web
新建项目后端
点击新建-->构建一个自由风格的软件项目-->点击OK安全
点击项目名称-->设置-->构建中选择执行远程脚本服务器
重要提示:执行远程命令主要涉及的是权限问题,咱们要搞明白Jenkins是以什么权限来执行命令的,咱们如今在Jenkins服务器上,若是在www用户上执行命令,须要怎么作?ssh
使用Jenkins用户将公钥发送给www用户工具
使用root用户将公钥发送给www用户,若是使用管理员命令则需sudo提权执行,由于web上默认执行命令的Jenkins用户gitlab
将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控制台输出: