持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]

持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]

标签(空格分隔): Jenkins

一、代码流水线管理

  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上

[[email protected] ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChVQufrGwqP5dkzIU4ZwXCjRuSvMVGN5lJdvL/QFckmlVphWMsQw06VsPhgcI1NDjGbKOh5pbjrylyJUCig5YIJ1xuMOZ2YAK32SceMxnVhEb/G4wNb9VMsGQ/Vs4CxrU1HdATktH9zDAV4Qz81x2POYJW5B5LAvwZ4owqnIpZ7o3ya6xBxEvCIMSVtD17oKrNqAphsg+e68KvRexiNCEbCbRGGq3bKevgiDsWpSGnCYsJC0+cSrUxuzEO3G6AqGI/qR3nOeg91rOsoAP3FpFjBKgb/sXggkwwjmGIqFXJrUG+XmczeF4kG/rUrNbdy84e5RyHoIS3XKnJuRjTxHyD [email protected]

[[email protected] ~]# vim .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChVQufrGwqP5dkzIU4ZwXCjRuSvMVGN5lJdvL/QFckmlVphWMsQw06VsPhgcI1NDjGbKOh5pbjrylyJUCig5YIJ1xuMOZ2YAK32SceMxnVhEb/G4wNb9VMsGQ/Vs4CxrU1HdATktH9zDAV4Qz81x2POYJW5B5LAvwZ4owqnIpZ7o3ya6xBxEvCIMSVtD17oKrNqAphsg+e68KvRexiNCEbCbRGGq3bKevgiDsWpSGnCYsJC0+cSrUxuzEO3G6AqGI/qR3nOeg91rOsoAP3FpFjBKgb/sXggkwwjmGIqFXJrUG+XmczeF4kG/rUrNbdy84e5RyHoIS3XKnJuRjTxHyD [email protected]

[[email protected] ~]# 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
[[email protected] ~]# ll
total 4
-rw-------. 1 root root 1021 Dec 13 05:56 anaconda-ks.cfg

#现在SSH连接就不需要密码了

授权jenkins用户,使用visudo或者编辑配置文件/etc/sudoers
[[email protected] ~]# vim /etc/sudoers
 92 jenkins ALL=(ALL)       NOPASSWD:/usr/bin/ssh
#jenkins授权所有主机,不需要密码执行ssh。切记不要授权ALL

我们在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编写执行脚本

然后我们点击立即构建

成功!

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

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

[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控制台输出信息:

时间: 2024-10-16 00:13:06

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

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

GitLab+Jenkins持续集成+自动化部署 什么是持续集成? (1)Continuous integration (CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译.发布.自动化测试)来验证,从而尽快地发现集成错误.许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件. (2)没有持续集成 项目做模块集成的时候,发现很多接口都不通==>浪费大量时间 需

Jenkins从零开始搭建持续集成+自动化部署详细说明

说明:该说明文档的案例是:在windows上部署Jenkins服务,最终将持续集成的war包自动部署到远程服务器(Centos 7)上. 一.Jenkins安装 1. Jenkins下载地址:https://jenkins.io/download/,如图,我现在的是windows版本的: 2. 下载之后,解压点击msi文件运行,如图: 3. 我已经安装过一次了,这儿就不详细描述,安装教程请参考百度经验:https://jingyan.baidu.com/article/cbcede077f62b

jenkins的Pipeline代码流水线管理

1.新建一个pipline任务 2.自写一个简单的pipline脚本 a.Pipeline的脚本语法在Pipeline Syntax中,片段生成器,示例步骤中选择builf:Build a job b.将生成的语句中的value赋值 c.在这条线上部署了两个job--test-zrlog.java-serverDB node { build job: 'test-zrlog', parameters: [gitParameter(name: 'version_tag', value: 'v1.4

Jenkins - JIRA - GitLab 集成技巧(流程自动化概念)

应用场景: 公司已经开始大规模推行持续集成的概念,我们也在采用敏捷方式进行测试与开发.所以我们在工具选型时选择了jenkins + gitlab + jira. 那么怎么才能让三者有机结合,让提交代码来触发jira上ticket的状态转换呢? 下面介绍一个jenkins 上的插件JIRA Plugin 1.先於JIRA新增一個user: jenkins(实际使用中,可以使用已存在的jira用户用来当做操作账号),並於專案設定中將此帳號設為Developers的一員. 2.并于JIRA的设定中将A

持续集成学习11 jenkins和gitlab集成自动触发

一.配置gitlab上提交代码后在jenkins上自动构建 1.在jenkins上配置gitlab 系统管理--->系统设置--->gitlab配置 2.在gitlab上配置token 3.在jenkins上配置gitlab的token 4.在构建触发器中配置 5.在gitlab中创建一个dev分支然后在jenkins中基于该分支创建一个token给gitlab用 原文地址:https://www.cnblogs.com/Presley-lpc/p/11840812.html

Jenkins和gitlab集成自动构建

Jenkins安装插件 Jenkins上需要安装如下插件 Gitlab Hook Plugin,GitLab Plugin Job配置 在需要自动触发的Job中 选择Build Triggers进行如下操作, 生成的token和webhook地址稍后有用 Gitlab上配置Webhook 返回值200表示正常与jenkins连接了,这样下次push代码后就会自动触发构建 原文地址:https://www.cnblogs.com/guigujun/p/10017838.html

持续集成与自动化部署 - jenkins & sonar代码质量管理平台 部署和基础使用(五)

1 jenkins 安装参考链接 1.1 安装jenkins [[email protected] ~]# yum install -y java-1.8.0 [[email protected] ~]# cd /etc/yum.repos.d/ [[email protected] yum.repos.d]# wget http://pkg.jenkins.io/redhat/jenkins.repo [[email protected] yum.repos.d]# rpm --import

Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记(1)

前言    持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新项目正好有机会,费了一番功夫总算搞好了,特此记录. 1. 开发环境    我这边建立的标准开发环境如下:    1. Maven做项目管理:    2. Git做代码管理:    3. SpringMVC+Spring+Mybatis搭建的程序框架:    4. Mysql作为数据存储,Druid做

Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记

前言 持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新项目正好有机会,费了一番功夫总算搞好了,特此记录. 1. 开发环境 我这边建立的标准开发环境如下: 1. Maven做项目管理: 2. Git做代码管理: 3. SpringMVC+Spring+Mybatis搭建的程序框架: 4. Mysql作为数据存储,Druid做连接池: 5. unitils作为测