转载:https://www.abcdocker.com/abcdocker/2065php
Pipeline
名词顾名思义就是流水线的意思,由于公司可能会有不少项目。若是使用jenkins构建完成后,开发构建项目须要一项一项点击,比较麻烦。因此出现pipeline名词。
代码质量检查完毕以后,咱们须要将代码部署到测试环境上去,进行自动化测试html
新建部署代码项目
点击新建
这里只须要写一下描述
执行Shell脚本 node
舒适提示:执行命令主要涉及的是权限问题,咱们要搞明白,jenkins是以什么权限来执行命令的。那么问题来了,咱们如今192.168.56.11上,若是在想192.168.56.12上执行命令。须要怎么作呢?linux
咱们作无秘钥有2种分案:git
一、使用jenkins用户将秘钥分发给192.168.56.12上
二、使用root用户将秘钥分发给192.168.56.12上,若是使用root用户还要进行visudo受权。由于Web上默认执行命令的用户是jenkinsweb
1.咱们使用root作密码验证
#这里咱们的key已经作好,若是没作能够直接 ssh-keygen -t ras
来生成秘钥
咱们将192.168.56.11上的公钥复制到192.168.56.12上docker
[root@linux-node1 ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChVQufrGwqP5dkzIU4ZwXCjRuSvMVGN5lJdvL/QFckmlVphWMsQw06VsPhgcI1NDjGbKOh5pbjrylyJUCig5YIJ1xuMOZ2YAK32SceMxnVhEb/G4wNb9VMsGQ/Vs4CxrU1HdATktH9zDAV4Qz81x2POYJW5B5LAvwZ4owqnIpZ7o3ya6xBxEvCIMSVtD17oKrNqAphsg+e68KvRexiNCEbCbRGGq3bKevgiDsWpSGnCYsJC0+cSrUxuzEO3G6AqGI/qR3nOeg91rOsoAP3FpFjBKgb/sXggkwwjmGIqFXJrUG+XmczeF4kG/rUrNbdy84e5RyHoIS3XKnJuRjTxHyD root@linux-node1
[root@linux-node2 ~]# vim .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChVQufrGwqP5dkzIU4ZwXCjRuSvMVGN5lJdvL/QFckmlVphWMsQw06VsPhgcI1NDjGbKOh5pbjrylyJUCig5YIJ1xuMOZ2YAK32SceMxnVhEb/G4wNb9VMsGQ/Vs4CxrU1HdATktH9zDAV4Qz81x2POYJW5B5LAvwZ4owqnIpZ7o3ya6xBxEvCIMSVtD17oKrNqAphsg+e68KvRexiNCEbCbRGGq3bKevgiDsWpSGnCYsJC0+cSrUxuzEO3G6AqGI/qR3nOeg91rOsoAP3FpFjBKgb/sXggkwwjmGIqFXJrUG+XmczeF4kG/rUrNbdy84e5RyHoIS3XKnJuRjTxHyD root@linux-node1
[root@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
[root@linux-node2 ~]# ll
total 4
-rw-------. 1 root root 1021 Dec 13 05:56 anaconda-ks.cfg
#如今SSH链接就不须要密码了
受权jenkins用户,使用visudo或者编辑配置文件/etc/sudoers
[root@linux-node1 ~]# vim /etc/sudoers
92 jenkins ALL=(ALL) NOPASSWD:/usr/bin/ssh
#jenkins受权全部主机,不须要密码执行ssh。切记不要受权ALL
咱们在192.168.56.12上写一个简单shell
脚本,检测是否能够执行成功。正式环境能够写一个自动化部署的脚本shell
[root@linux-node2 ~]# echo "echo "hello word"" >demo.sh
[root@linux-node2 ~]# chmod +x demo.sh
[root@linux-node2 ~]# ll demo.sh
-rwxr-xr-x 1 root root 16 Dec 17 02:24 demo.sh
jenkins编写执行脚本
而后咱们点击当即构建
成功!
如今咱们要将代码质量管理和测试部署链接起来。vim
这时候就用到了git
钩子
咱们须要安装jenkins插件parameterized
安全
咱们选择demo-deploy
再次点击项目设置的时候就会出现Trigger parameterized build on other projects
提示:Projects to build
是为构建设置一个项目。例如咱们想构建完代码项目后执行测试的,这里就填写测试的就能够。
最后点击保存,点击构建。咱们查看效果
#这样咱们每次点击demo-deploy 它就会在构建完成以后在对auto-deploy进行构建
下载pipeline。这样只须要构建一个项目,就会帮咱们完成全部相关项目
搜索插件pipeline
等待安装完成
咱们点击首页+号,新建一个试图
点击OK
pipeline 配置
而后咱们点击保存
pipeline视图以下:
点击Run
这样就先代码质量进行管理,而后就开始部署了
构建成功后:
这样咱们下次想看pipeline视图的时候,点击上面的demo-pipeline便可
Jenkins + gitlab
集成后,实现的功能是 开发写好代码提交至gitlab上,当时开始push到gitlab上以后,jenkins自动帮咱们当即构建
这个项目咱们须要安装一个gitlab钩子
的脚本
提示: jenkins不论想实现什么功能,都须要安装插件!!
安装完插件以后咱们就开始配置钩子脚本
这里须要咱们在服务器里面写一个令牌,在jenkins上也写一个令牌。这两个能够链接到一块儿就能够。
#由于用到了令牌咱们还须要在安装一个插件,不然将没法使用。由于令牌是须要登陆以后才会有,因此须要有一个管理的插件
插件搜索:Build Aut
为了令牌的安全性,咱们使用openssl生成一个
[root@linux-node1 ~]# openssl rand -hex 10
0a37c6d7ba1fe3472e26
而后咱们点击保存便可
由于jenkins上也提示咱们须要在gitlab上添加钩子脚本
点击咱们建立的项目
选中Webhooks
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填写的令牌
而后点击Add Webhook
下方就会出现咱们这个选项,咱们点击Test
进行测试
测试结果
向git
服务器提交代码,验证是否能够自动部署:
[root@linux-node1 ~]# echo "Build Token Root Plugin" > index.html
[root@linux-node1 ~]# git add index.html [root@saltmaster ~/weather]# git commit -m "text"
[root@linux-node1 ~]# git push origin master
jenkins服务器的日志记录:
[root@linux-node1 ~]# tail -f /var/log/jenkins/jenkins.log
jenkins项目构建:
访问web界面验证代码是否最新的:
jenkins控制台输出信息: