jenkins实现代码的部署&回滚

author author     2023-01-12     801

关键词:


一、Jenkins介绍

      Jenkins是一个独立的开源软件项目,是基于Java开发的一款CI(持续集成)&CD(持续交付)工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台。可用于各类自动化任务,比如构建、测试和部署软件。
      Jenkins只是一个调度平台,其自身并不能完成项目的构建部署,需要借助各类插件实现各类构建部署。
      Jenkins的特点如下:

  • 开源免费
  • 跨平台,支持所有平台
  • Master/slave支持分布式构建
  • 可视化管理页面
  • 支持多种插件

二、Jenkins安装和启动

2.1 Java安装​

      Jenkins基于Java实现,需要安装Java环境。命令如下:

apt-get -y install openjdk-11-jdk

2.2 Ubuntu 20.04环境下二进制包安装Jenkins

wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/debian-stable/jenkins_2.361.4_all.deb​​​
dpkg -i jenkins_2.361.4_all.deb

2.3 启动&初始化​

Jenkins实现代码的部署&回滚_DevOps

​      访问​http://xxx.xxx.xxx.xxx:8080

      初次登录的密码可以查看/var/lib/jenkins/secrets/initialAdminPassword文件​。

      由于默认安装插件需要连接国外的网站,故建议选择插件安装,先不安装任何插件,后续做优化配置再去安装就会快很多。而选择安装推荐的插件会安装很慢,可以选择不安装。​

Jenkins实现代码的部署&回滚_GitLab_02

Jenkins实现代码的部署&回滚_DevOps_03


Jenkins实现代码的部署&回滚_GitLab_04

      这里使用admin账户即可

Jenkins实现代码的部署&回滚_DevOps_05


Jenkins实现代码的部署&回滚_Jenkins_06


三、Jenkins基础配置

3.1 修改管理员密码

      点击Admin下面的configure,修改密码

Jenkins实现代码的部署&回滚_Jenkins_07


3.2 修改Jenkins的启动用户

      Jenkins默认使用Jenkins用户启动,会导致权限受限,需要修改为root启动。
      打开/lib/systemd/system/jenkins.service,做如下配置:

User=root
Group=root

      之后重启Jenkins

3.3 Jenkins插件管理及安装

      插件安装目录位于/var/lib/jenkins/plugins目录下

3.3.1 更改Jenkins的镜像源为国内镜像站

sed -i s#updates.jenkins.io/download#mirror.tuna.tsinghua.edu.cn/jenkins#g /var/lib/jenkins/updates/default.json
sed -i s#www.google.com#www.baidu.com#g /var/lib/jenkins/updates/default.json

​      再将升级站点url替换成下面国内镜像地址
​​​https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json​

3.3.2 安装中文插件

Jenkins实现代码的部署&回滚_GitLab_08

      之后等安装成功后重启Jenkins即可

3.4 Jenkins邮箱配置

      点击系统管理->系统配置,系统管理员邮件地址和SMTP中写的用户必须相同

Jenkins实现代码的部署&回滚_GitLab_09

Jenkins实现代码的部署&回滚_Jenkins_10


Jenkins实现代码的部署&回滚_GitLab_11


Jenkins实现代码的部署&回滚_Jenkins_12


      测试发送邮件效果如下:

Jenkins实现代码的部署&回滚_GitLab_13


四、Jenkins实现CI&CD​

      流程如下:

Jenkins实现代码的部署&回滚_DevOps_14


其中Jenkins需要做的就是从GitLab上拉取代码,再将代码传到测试服务器。当然,实际工作中还要等测试通过了最终把代码放到生产服务器。


4.1 创建自由风格的job

4.1.1 构建流程

  1. 新建任务。输入任务名,选择什么风格的项目,项目描述
  2. 设置丢弃旧的构建。设置项目的构建产物保留多少天,项目最多保留多少产物,多余的自动删除
  3. 源码管理。从仓库下载源码
  4. 构建触发器。定义自动构建的触发器
  5. 构建。即构建项目的具体过程,比如编译、打包、部署等
  6. 构建后操作。构建完成后可以执行的操作。比如邮件通知等

4.1.2 创建简单的自由风格任务​

Jenkins实现代码的部署&回滚_DevOps_15


4.2 Jenkins与GitLab结合实现代码下载​

4.2.1 安装与GitLab相关的插件

Jenkins实现代码的部署&回滚_DevOps_16

4.2.2 基于ssh key拉取代码

      先在Jenkins服务器用ssh-keygen生成密钥对,之后在GitLab中的具有项目访问权限的账号导入Jenkins服务器的公钥

Jenkins实现代码的部署&回滚_Jenkins_17

4.2.3 Jenkins服务器添加凭据

      虽然Jenkins将root用户的公钥传到GitLab服务器基于ssh key拉取代码,但是Jenkins不能自动获取root用户的私钥,从而无法直接在Jenkins中的项目直接连接GitLab仓库。还需要将Jenkins服务器的root用户的私钥创建为Jenkins的凭据,便于后续连接GitLab。
      Jenkins所支持的凭证类型如下:

  • 用户名和密码(Username with password)
  • SSH用户名和私钥(SSH Username with private key)
  • Github App
  • Secret file: 需要保密的文本文件,保存有Token等信息
  • Secret text:Token,串需要保密的文本,例如Github的API Token等
  • Certificate
  • 其它凭证类型还有二进制数据,或者更复杂形式的项目,例如OAuth凭证等

      凭证的作用域决定了它可用的目标范围

  • 系统:作用于Jenkins系统自身,仅可用于系统和后台任务,且一般用于连接到agent节点之上
  • 全局:作用于Jenkins上的所有任务,以确保任务的正常执行
  • 用户:作用于用户级别,仅生效于Jenkins中的线程代表该用户进行身份验证之时;

注意:在Jenkins内部,凭证被存放在JENKINS_ HOME目录下的secrets目录中,请务必确保该目录的访问 权限进行了正确的设置

添加凭据的过程如下:

Jenkins实现代码的部署&回滚_Jenkins_18

Jenkins实现代码的部署&回滚_GitLab_19

Jenkins实现代码的部署&回滚_Jenkins_20

Jenkins实现代码的部署&回滚_DevOps_21


4.2.4 Jenkins任务中使用凭据

      使用基于key的凭据操作如下(注意代码分支要指定正确):

Jenkins实现代码的部署&回滚_Jenkins_22

Jenkins实现代码的部署&回滚_DevOps_23


      点击立即构建,查看构建结果

Jenkins实现代码的部署&回滚_DevOps_24

4.2.5 将代码部署到后端服务器

      后端服务器需要先安装nginx。部署过程用脚本实现。脚本内容如下:

#!/bin/bash
HOST_LIST="
192.168.1.105
192.168.1.106"
APP_PATH=/var/www/html
deploy ()
for i in $HOST_LIST;do
scp -r * $i:$APP_PATH/
done

deploy

Jenkins实现代码的部署&回滚_GitLab_25

Jenkins实现代码的部署&回滚_Jenkins_26

      启动nginx后访问后端页面也正常

Jenkins实现代码的部署&回滚_DevOps_27

4.2.6 版本升级

      在之前执行git clone的主机上执行如下操作,更新代码

cd /root/wheel_of_fortune
vim index.html
git add .
git commit -m "2nd"
git push -u origin main

      之后在Jenkins再次构建,访问后端页面发现已经修改(至2nd版本)

Jenkins实现代码的部署&回滚_GitLab_28

4.2.7 版本回滚​

# git revert 撤销某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销,作为一次最新的提交
git revert HEAD
git add. ;git commit -m "2nd-rollback";git push origin main

      之后在Jenkins再次构建,查看后端页面,已经修改为1st(2nd版本撤销)的那一次

Jenkins实现代码的部署&回滚_GitLab_29


jenkins与gitlib实现自动化部署与持续构建

持续部署之jenkins与gitlab(一)主要部分安装部署Jenkins和gitlib了解gitlib的常用命令部署haproxy与tomcat环境配置Jenkins使用gitlib更新代码通过sonar实现代码检测实现gitlib触发Jenkins自动部署通过Jenkins实现自动部署实现haproxy动态添加删除... 查看详情

jenkins使用ftp进行一键部署及回滚(windows)

...境,另一个是测试环境。2、两台服务器上都必须安装了Jenkins。3、其中,生产环境上的Jenkins已经开通的CLI的权限(Windows参考:http://www.cnblogs.com/EasonJim/p/6086018.html)。具体实现步骤:1、在生产环境的Jenkins配置一个解压操作的工... 查看详情

jenkins打标签实现实现回滚

背景介绍:本项目代码存储在gitlab,再通过jenkins发布到对应的节点上。使用tag控制版本:每一次成功的构建,jenkins会自动为gitlab的分支打上tag,版本更新可直接选择production分支,当需要回滚时选择对应的tag进行构建。jenkins主... 查看详情

jenkins使用ftp进行一键部署及回滚2(windows)(项目实践)

 转载:http://www.cnblogs.com/EasonJim/p/6295372.htmlJenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)前提:这一篇是继上一篇http://www.cnblogs.com/EasonJim/p/6092938.html的真实项目实践。思路和大致实现步骤请参照上一篇文章。注意... 查看详情

jenkins一个通用的pipline模版,区分部署回滚,支持参数化构建,多环境,多节点(代码片段)

使用的docker镜像进行构建的,git认证,ssh认证都在镜像中//开发环境defDEPLOY_DEV_HOST=['10.10.1.2','10.10.1.3','10.10.1.4']//测试环境defDEPLOY_TEST_THOST=['10.10.1.12','10.10 查看详情

jenkins一个通用的pipline模版,区分部署回滚,支持参数化构建,多环境,多节点(代码片段)

使用的docker镜像进行构建的,git认证,ssh认证都在镜像中//开发环境defDEPLOY_DEV_HOST=['10.10.1.2','10.10.1.3','10.10.1.4']//测试环境defDEPLOY_TEST_THOST=['10.10.1.12','10.10 查看详情

接口自动化平台搭建,自动化项目jenkins持续集成

一、Jenkins的优点1、传统网站部署流程??一般网站部署的流程这边是完整流程而不是简化的流程 需求分析—原型设计—开发代码—内网部署-提交测试—确认上线—备份数据—外网更新-最终测试 ,如果发现外网部署的代码... 查看详情

jenkins结合gitlab实现pipline的自动构建部署(代码片段)

部署jenkins与gitlab服务就在这不演示了,可以参考前面的两篇文章。1、jenkins配置自动构建部署1.1、基于sshkey拉取代码先在jenkins服务器上创建个sshkey,在把公钥配置到gitlab上面,再到jenkinsweb界面配置凭据,使jenkins来拉取代码。roo... 查看详情

jenkins+gitlab通过脚本自动部署回滚web项目版本至服务器集群(测试环境和正式环境),图文详细(代码片段)

扩展文章:Gitlab+Jenkins通过钩子实现自动部署web项目一:基础环境介绍及准备不在通过钩子自动部署至web服务器,需要自己通过脚本在Jenkins选择版本或者服务器发布回滚。灵活性更高,对于集群来说也实用。1&#... 查看详情

jenkins实现cicd实战攻略部署备份(代码片段)

Jenkins安装、备份和恢复一.安装Jenkins下载安装包,官方地址支持常见的部署方式下载war包,将其放到tomcat中运行(放到webapps目录下,启动tomcat)直接执行java-jarjenkins.war--httpPort=8080官方推荐使用rpm包安装yuminstall-yjenkinsdocker容器部... 查看详情

jenkins一个通用的pipline模版,区分部署回滚,支持参数化构建,多环境,多节点(代码片段)

...认证defSSH_CREDENTIAL="/root/.ssh/"defSSH_KEY="/home/jenkins/.ssh/"pipeline//拉去go环境镜像agentdockerlabel 查看详情

gitlab+jenkins通过钩子实现自动部署web项目,图文详细教程

参考技术A扩展参考:Jenkins+Gitlab通过脚本自动部署回滚web项目至集群1):Gitlab服务器:ubuntu192.168.152.131---参考搭建:Linux安装gitlab,docker安装gitlab教程2):Jenkins服务器:ubunu192.168.152.130---参考搭建:linux安装Jenkins,或docker安装Jenkin... 查看详情

jenkins实现项目自动部署

背景整体思路实现方式1自动化部署脚本2远程执行3配置jenkins任务背景之前给公司搭建过一套gitlab+gerrit+jenkins的持续集成环境,由于操作起来有点繁琐,自己也没太搞清楚该怎么用,所以一直就只用了gitlab来做代码管理。最近要... 查看详情

jenkins环境搭建部署实现代码自动化发布

一、jenkins代码自动部署1.配置免密钥通信实现自动化部署首先要解决的是免密码传输,配置jenkins至测试服务器之间免密钥ssh登录650)this.width=650;"src="https://images2015.cnblogs.com/blog/1056769/201703/1056769-20170323102823299-1325450148.png"/>测试免密... 查看详情

jenkins与gitlib实现自动化部署与持续构建(代码片段)

Jenkins概念Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允许... 查看详情

如何用jenkins实现自动化部署svn更新代码

参考技术A这个很简单的呢,在Jenkins中配置svn代码库就行了 查看详情

通过jenins实现应用程序部署(代码片段)

接着上一篇处理jenkins的问题,Jenkins调整好以后(主要包括docker和maven),准备把之前的一个.net项目通过jenkins发布。项目里面分5个子项目,server/receiver/push/attachment/web,之前用shell脚本做过一次编译封装,目前欠缺的主要是代码... 查看详情

jenkins持续部署(微服务架构项目部署)(代码片段)

...续集成1.什么是持续集成2持续交付3持续集成的作用二、Jenkins介绍三、Jenkins安装1.安装Jenkins2.配置jenkins ​3.插件安装四、任务构建1.新建任务​2.源码管理​3.maven设置4.远程设置5.构建任务6.构建启动脚本一、持续集成1.什么是持... 查看详情