持续集成与自动化部署---代码流水线管理及Jenkins和gitlab集成
1、代码流水线管理
Pipeline
名词顾名思义就是流水线的意思,因为公司可能会有很多项目。如果使用jenkins
构建完成后,开发构建项目需要一项一项点击,比较麻烦。所以出现pipeline
名词。- 代码质量检查完毕之后,我们需要将代码部署到测试环境上去,进行自动化测试。
新建部署代码项目
点击新建
填写构建任务的描述
新增构建步骤,执行Shell脚本
温馨提示:执行命令主要涉及的是权限问题,我们要搞明白,jenkins是以什么权限来执行命令的。那么问题来了,我们现在192.168.56.11(Jenkins所在机器)上,如果在想192.168.56.12上执行命令。需要怎么做呢?如下
我们做无秘钥有2种分案:
- 使用jenkins用户将秘钥分发给192.168.56.12上
- 使用root用户将秘钥分发给192.168.56.12上,如果使用root用户还要进行visudo授权。因为Web上默认执行命令的用户是jenkins
1、我们使用root做密码验证
- 这里我们的key已经做好,如果没做可以直接
ssh-keygen -t ras
来生成秘钥 - 我们将192.168.56.11上的公钥复制到192.168.56.12上
[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
- 这里我们的key已经做好,如果没做可以直接
我们在192.168.56.12上写一个简单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编写执行脚本
然后我们点击立即构建
构建成功,如下
将代码质量管理和测试部署连接起来
- 安装jenkins插件
parameterized
(git钩子)
- 安装Jenkins的maven-plugin插件
Pipeline Maven Integration Plugin
- 选择构建任务demo-deploy进行配置
- 在配置中增加构建后操作步骤
Trigger parameterized build on other projects
Projects to build
是为构建设置一个项目。例如我们想构建完代码项目后执行测试的,这里就填写测试的构建任务。
- Projects to build:需要构建的项目(job)名,如果有多个项目用,分隔。
- Trigger when build is:构建触发的条件
- Stable 成功(稳定)(等价于successful)
- Unstable 不稳定
- Stable or unstable but not failed 成功(稳定)或者不稳定,但是没有失败
- Unstable or Failed but not stable 不稳定或者失败,但是没有成功(稳定)
- Failed 失败
- Complete (always trigger) 完成(总是触发)
- Trigger build without parameters:构建的job不带参数(选择后下面的参数无效)
- 没有特别的需求,参数可以忽略。
- Add Parameters:添加参数
- Boolean parameters 布尔参数(键值对)
- Build on the same node 在同一个节点上构建
- Current build parameters 当前构建参数
- Parameters from properties file 从属性文件获取参数
- Predefined parameters 预定义参数
- Restrict matrix execution to a subset 限制矩阵执行的一个子集
- Subversion revision svn版本
- 最后点击保存,点击构建。效果如下:
- 这样我们每次点击
demo-deploy
,它就会在构建完成之后再对auto-deploy
进行构建
- 这样我们每次点击
将构建任务加入Build Pipeline View
中
- 下载pipeline,这样只需要构建一个项目,就会帮我们完成所有相关项目的构建
- 安装完成后,我们点击首页的+号,新建一个视图
- 点击OK
- pipeline 配置
- 点击保存后,pipeline视图如下:
- 点击Run
- 这样就可以先对代码质量进行管理,然后就开始部署了
- 构建成功后:
- 这样我们下次想看pipeline视图的时候,点击上面的demo-pipeline即可
2、Jenkins + gitlab集成
Jenkins + gitlab
集成后,实现的功能是:开发写好代码提交至gitlab上,即代码开始push到gitlab上之后,jenkins会自动帮我们立即构建。
安装一个
gitlab
钩子的插件,如下
安装完插件之后我们就开始配置钩子脚本
这里需要我们在服务器里面写一个令牌,在jenkins上也写一个令牌。这两个可以连接到一起就可以了。
- 因为用到了令牌我们还需要在安装一个插件,否则将无法使用。因为令牌是需要登录之后才会有,所以需要有一个管理的插件,插件搜索:Build Aut,如下
- 因为用到了令牌我们还需要在安装一个插件,否则将无法使用。因为令牌是需要登录之后才会有,所以需要有一个管理的插件,插件搜索:Build Aut,如下
为了令牌的安全性,我们在Jenkins所在机器上使用openssl生成一个
[root@linux-node1 ~]# openssl rand -hex 10
0a37c6d7ba1fe3472e26
5. 然后我们点击保存即可,因为jenkins上也提示我们需要在gitlab上添加钩子脚本,点击我们创建的项目,如下
6. 选中Webhooks
7. 使用Build插件后,url如下:
http://192.168.56.11:8080/buildByToken/build?job=auto-deploy&token=0a37c6d7ba1fe3472e26
# auto-deploy=项目名称(构建时的项目名称)
# 0a37c6d7ba1fe3472e26=jenkins填写的令牌
8. 然后点击Add Webhook
9. 下方就会出现我们这个选项,我们点击Test进行测试
10. 测试结果
11. 向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
13. jenkins项目构建:
14. 访问web界面验证代码是否最新
15. jenkins控制台输出信息如下:
持续集成与自动化部署---代码流水线管理及Jenkins和gitlab集成的更多相关文章
- 持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]
转载:https://www.abcdocker.com/abcdocker/2065 一.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkin ...
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(一):Jenkins安装
2019/1/31更新,经过我一段时间的使用 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用d ...
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(二):部署
前面又是废话 我之前写过: Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署 Asp.Net Core 程序部署到Linux(centos)生产环境(二):doc ...
- .NET持续集成与自动化部署之路第二篇——使用NuGet.Server搭建公司内部的Nuget(包)管理器
使用NuGet.Server搭建公司内部的Nuget(包)管理器 前言 Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展.在使用Visual Studio开发基 ...
- Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记
前言 持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新 ...
- .NET持续集成与自动化部署之路第一篇——半天搭建你的Jenkins持续集成与自动化部署系统
.NET持续集成与自动化部署之路第一篇(半天搭建你的Jenkins持续集成与自动化部署系统) 前言 相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛 ...
- NET持续集成与自动化部署
https://www.cnblogs.com/hunternet/p/9590287.html 相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛.由于我们 ...
- Jenkins学习总结(3)——Jenkins+Maven+Git搭建持续集成和自动化部署的
前言 持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新项目正 ...
- .NET 半天搭建Jenkins持续集成与自动化部署系统
前言 相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛.由于我们所做的系统业务复杂,系统庞大,设计到多个系统之间的合作,而核心系统更是采用分布式系统架构,由 ...
随机推荐
- 数据结构与算法 C++ 视频教程(4 套)百度网盘
为了大二有实力参加算法比赛,大一暑假我选择了留校,提前学习了一下数据结构和算法,这是我找的一些视频资源,分享给大家! 分别是 慕课网 玩转算法与数据结构.慕课网 玩转算法面试.慕课网 玩转数据结构 从 ...
- Vue与原生APP的相互交互
现在好多APP都采用了Hybrid的开发模式,这种模式特别适合那些内容变动更新较大的APP,从而使得开发和日常维护过程变得集中式.更简短.更经济高效,不需要纯原生频繁发布.但有利肯定有弊咯,性能方面能 ...
- 小白的java学习之路 “ 循环结构(一)”
循环: 重复得做某一件事情 举例: 打印50份试卷 沿操场跑10圈 做100道编程题 循环结构的特点: 循环条件 (50,10,100) 循环操作 (打印试卷,沿操场跑圈,做编程题) while 循环 ...
- Python 安装 virturalenv 虚拟环境
返回目录 本篇索引 一.概述 二.Linux下安装Python虚拟环境 三.Windows下安装Python虚拟环境 一.概述 有时候会在一台主机上安装多个不同的Python版本,用以运行不同时期开发 ...
- node-express处理表单的接口
写一个小接口,用postman测试接口是否可行
- 我的JAVA环境搭建
每次重装系统后的开发环境搭建,总是会花费大量的时间精力,软件下载安装啦,配置修改啦等等,索性把这些流程记录一下,毕竟时间就是金钱. 软件列表 JDK1.8 IntelliJ IDEA Navicat数 ...
- Spark学习之路 (二十八)分布式图计算系统[转]
引言 在了解GraphX之前,需要先了解关于通用的分布式图计算框架的两个常见问题:图存储模式和图计算模式. 图存储模式 巨型图的存储总体上有边分割和点分割两种存储方式.2013年,GraphLab2. ...
- pip淘宝镜像安装
pip install virtualenvwrapper-win pip install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv ...
- Costco这样的超级零售商,能不能干掉电商?
名创优品创始人叶国富曾说过,Costco只是没有来到中国(大陆),如果它来了,中国现在的零售业全部都会"死光".叶国富的话,似乎一语成箴. 随着Costco正式入华,其正在彻底搅动 ...
- threadpool 实例介绍第二篇