环球焦点!Jenkins实现代码的部署&回滚

2023-01-11 14:12:26 来源:51CTO博客

一、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 启动&初始化​

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


【资料图】

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

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

这里使用admin账户即可

三、Jenkins基础配置

3.1 修改管理员密码

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

3.2 修改Jenkins的启动用户

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

User=rootGroup=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.jsonsed -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即可

3.4 Jenkins邮箱配置

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

测试发送邮件效果如下:

四、Jenkins实现CI&CD​

流程如下:

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

4.1 创建自由风格的job

4.1.1 构建流程

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

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

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

4.2.1 安装与GitLab相关的插件

4.2.2 基于ssh key拉取代码

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

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目录中,请务必确保该目录的访问 权限进行了正确的设置

添加凭据的过程如下:

4.2.4 Jenkins任务中使用凭据

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

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

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

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

#!/bin/bashHOST_LIST="192.168.1.105192.168.1.106"APP_PATH=/var/www/htmldeploy () {  for i in ${HOST_LIST};do    scp -r * $i:${APP_PATH}/  done}deploy

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

4.2.6 版本升级

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

cd /root/wheel_of_fortunevim index.htmlgit add .git commit -m "2nd"git push -u origin main

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

4.2.7 版本回滚​

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

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

标签: 服务器的 发送邮件 测试服务器

上一篇:天天短讯!视觉语言导航研究进展
下一篇:当前报道:【SpringBoot实战专题】「开发实战系列」从零开始教你舒服的使用RedisTemplate操作Redis数据