转载:https://www.abcdocker.com/abcdocker/2065

一、代码流水线管理

  Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目。如果使用jenkins构建完成后,开发构建项目需要一项一项点击,比较麻烦。所以出现pipeline名词。 
  代码质量检查完毕之后,我们需要将代码部署到测试环境上去,进行自动化测试

新建部署代码项目 
点击新建 


这里只需要写一下描述 

执行Shell脚本 

温馨提示:执行命令主要涉及的是权限问题,我们要搞明白,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上

 
  1. [root@linux-node1 ~]# cat .ssh/id_rsa.pub
  2. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChVQufrGwqP5dkzIU4ZwXCjRuSvMVGN5lJdvL/QFckmlVphWMsQw06VsPhgcI1NDjGbKOh5pbjrylyJUCig5YIJ1xuMOZ2YAK32SceMxnVhEb/G4wNb9VMsGQ/Vs4CxrU1HdATktH9zDAV4Qz81x2POYJW5B5LAvwZ4owqnIpZ7o3ya6xBxEvCIMSVtD17oKrNqAphsg+e68KvRexiNCEbCbRGGq3bKevgiDsWpSGnCYsJC0+cSrUxuzEO3G6AqGI/qR3nOeg91rOsoAP3FpFjBKgb/sXggkwwjmGIqFXJrUG+XmczeF4kG/rUrNbdy84e5RyHoIS3XKnJuRjTxHyD root@linux-node1
  3. [root@linux-node2 ~]# vim .ssh/authorized_keys
  4. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChVQufrGwqP5dkzIU4ZwXCjRuSvMVGN5lJdvL/QFckmlVphWMsQw06VsPhgcI1NDjGbKOh5pbjrylyJUCig5YIJ1xuMOZ2YAK32SceMxnVhEb/G4wNb9VMsGQ/Vs4CxrU1HdATktH9zDAV4Qz81x2POYJW5B5LAvwZ4owqnIpZ7o3ya6xBxEvCIMSVtD17oKrNqAphsg+e68KvRexiNCEbCbRGGq3bKevgiDsWpSGnCYsJC0+cSrUxuzEO3G6AqGI/qR3nOeg91rOsoAP3FpFjBKgb/sXggkwwjmGIqFXJrUG+XmczeF4kG/rUrNbdy84e5RyHoIS3XKnJuRjTxHyD root@linux-node1
  5. [root@linux-node1 ~]# ssh 192.168.56.12
  6. The authenticity of host '192.168.56.12 (192.168.56.12)' can't be established.
  7. ECDSA key fingerprint is b5:74:8f:f1:03:2d:cb:7d:01:28:30:12:34:9c:35:8c.
  8. Are you sure you want to continue connecting (yes/no)? yes
  9. Warning: Permanently added '192.168.56.12' (ECDSA) to the list of known hosts.
  10. Last login: Sat Dec 17 02:14:31 2016 from 192.168.56.1
  11. [root@linux-node2 ~]# ll
  12. total 4
  13. -rw-------. 1 root root 1021 Dec 13 05:56 anaconda-ks.cfg
  14. #现在SSH连接就不需要密码了
  15. 授权jenkins用户,使用visudo或者编辑配置文件/etc/sudoers
  16. [root@linux-node1 ~]# vim /etc/sudoers
  17. 92 jenkins ALL=(ALL) NOPASSWD:/usr/bin/ssh
  18. #jenkins授权所有主机,不需要密码执行ssh。切记不要授权ALL

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

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

jenkins编写执行脚本 

然后我们点击立即构建 

成功! 

现在我们要将代码质量管理和测试部署连接起来。

这时候就用到了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集成

Jenkins + gitlab集成后,实现的功能是 开发写好代码提交至gitlab上,当时开始push到gitlab上之后,jenkins自动帮我们立即构建

这个项目我们需要安装一个gitlab钩子的脚本

提示: jenkins不论想实现什么功能,都需要安装插件!!


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

这里需要我们在服务器里面写一个令牌,在jenkins上也写一个令牌。这两个可以连接到一起就可以。

#因为用到了令牌我们还需要在安装一个插件,否则将无法使用。因为令牌是需要登录之后才会有,所以需要有一个管理的插件

插件搜索:Build Aut 

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

 
  1. [root@linux-node1 ~]# openssl rand -hex 10
  2. 0a37c6d7ba1fe3472e26


然后我们点击保存即可

因为jenkins上也提示我们需要在gitlab上添加钩子脚本

点击我们创建的项目 

选中Webhooks 

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

使用Build插件后,url如下:

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


然后点击Add Webhook 

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

测试结果 

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

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

jenkins服务器的日志记录:

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

jenkins项目构建: 

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

持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]的更多相关文章

  1. 持续集成与自动化部署---代码流水线管理及Jenkins和gitlab集成

    1.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkins构建完成后,开发构建项目需要一项一项点击,比较麻烦.所以出现pipeline名词. 代 ...

  2. Linux-GitLab+Jenkins持续集成+自动化部署

    GitLab+Jenkins持续集成+自动化部署 什么是持续集成? (1)Continuous integration (CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个 ...

  3. CentOS 7 Gitlab+Jenkins持续集成+自动化部署

    基于上次的环境<部署Gitlab+Jenkins持续集成环境> 来实现自动化部署 系统管理–>插件管理–>安装以下插件: Credentials Plugin(默认已经安装) ...

  4. .Net Core自动化部署系列(三):使用GitLab CI/CD 自动部署Api到Docker

    之前写过使用Jenkins实现自动化部署,最近正好没事研究了下GitLab的自动化部署,顺便记录一下. 使用GitLab部署我们需要准备两件事,第一个起码你得有个GitLab,自己搭建或者使用官方的都 ...

  5. 自动化部署教程(一) redhat安装jenkins

    自动化部署教程(一)  redhat安装jenkins 源配置: sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.or ...

  6. Jenkins与Gitlab集成

    一.安装jenkinshttps://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/     #清华yum源 yum -y install java-1.8. ...

  7. Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(一):Jenkins安装

    2019/1/31更新,经过我一段时间的使用 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用d ...

  8. Jenkins自动化部署代码

    通过jenkins自动化部署项目代码可以大幅度节省打包上传部署的时间,提高开发测试的工作效率 ========== 完美的分割线 =========== 1.Jenkins是什么 1)Jenkins是 ...

  9. jenkins与gitlab集成,分支提交代码后自动构建任务(六)

    一.在gitlab中创建token 复制token,此token只显示一次:6SB8y4jt31NnYG5-nWoi 二.在gitlab上为项目创建trunk分支 三.在jenkins中配置gitla ...

随机推荐

  1. 如何自定义 maven中的archetype

    1.首先使用eclipse创建一个新的maven project,然后把配置好的一些公用的东西放到相应的目录下面 比如说会将一些常用的java代码存放到src/main/java目录下面: 会将一些通 ...

  2. myeclipse和eclipse的区别和联系,以及版本间的对应关系

    Eclipse:IBM花了4千万美金来开发这个IDE(Integrated Development Environment).第一版1.0在2001年11月释出,随后逐渐受到欢迎.Eclipse已经成 ...

  3. 在ASP.NET MVC中使用Boostrap实现产品的展示、查询、排序、分页

    在产品展示中,通常涉及产品的展示方式.查询.排序.分页,本篇就在ASP.NET MVC下,使用Boostrap来实现. 源码放在了GitHub: https://github.com/darrenji ...

  4. firedac连接WINDOWS的ORACLE

    firedac连接WINDOWS的ORACLE 首先安装OCI FOR WINDOWS.OCI分WIN32和WIN64,且OCI的版本要和ORACLE的版本相一致才行. FIREDAC指定OCI驱动程 ...

  5. iPhone上将短信内容发送到指定邮箱的方法

    iPhone上将短信内容发送到指定邮箱的方法 迄今为止,移动应用安全基本聚焦在以下几个方面,一是移动设备管理BYOD(bring your own device),二是移动恶意软件分析,三是移动设备用 ...

  6. Mysql 根据id查所有父级或子级

    mysql递归查询,mysql中从子类ID查询所有父类(做无限分类经常用到) 由于mysql 不支持类似 oracle with ...connect的 递归查询语法 之前一直以为类似的查询要么用存储 ...

  7. libcurl断点下载遇到的问题

    最近游戏把资源(图片.配置.lua)的加载.更新全部改了 ,加载其实还好,就是不走之前的zip解压方式.   以前的大体流程: 下载 –> 启动 –> 解压 –> 更新 –> ...

  8. lucene4之后的近实时搜索实现

    好久没干这块东西了,近几天须要做这个.所以又一次学了一下.首先很感谢孔浩老师,没孔浩老师的视频我也不会进入lucene的殿堂. 老师当时讲的实时搜索还是NRTManager,如今已经都变了,这个类已经 ...

  9. [转]php使用 memcache 来存储 session

    转自:http://koda.iteye.com/blog/466667 Memcache和PHP memcach扩展安装请见http://koda.iteye.com/blog/665761 设置s ...

  10. [转]php判断一个数组是另一个数组的子集

    FROM : http://blog.csdn.net/lcion/article/details/8985220 今天完成一个算法的过程中,有几个需求模块,其中就有判断$a数组是否是$b数组的子集, ...