Jenkins
部署Jenkins
1、下载程序包
(官方站点:https://www.jenkins.io/download/)
(国内镜像服务站点:https://repo.huaweicloud.com/jenkins/debian/jenkins_2.380_all.deb)
[root@ubuntu2004 ~]#wget https://repo.huaweicloud.com/jenkins/debian/jenkins_2.380_all.deb
2、安装openjdk-11-jre
[root@ubuntu2004 ~]#apt-get update
[root@ubuntu2004 ~]#apt-get install fontconfig openjdk-11-jdk
3、安装jenkins
[root@ubuntu2004 ~]#dpkg -i jenkins_2.380_all.deb
正在选中未选择的软件包 jenkins。
(正在读取数据库 ... 系统当前共安装有 73100 个文件和目录。)
准备解压 jenkins_2.380_all.deb ...
正在解压 jenkins (2.380) ...
正在设置 jenkins (2.380) ...
Created symlink /etc/systemd/system/multi-user.target.wants/jenkins.service → /lib/systemd/system/jenkins.service.
正在处理用于 systemd (245.4-4ubuntu3.15) 的触发器 ...
4.查看是否开启8080端口
[root@ubuntu2004 ~]#ss -ntl
随后即可通过节点IP默认的8080端口访问Jenkins服务
http://10.0.0.100:8080/

查看密钥,并填写
[root@ubuntu2004 ~]#cat /var/lib/jenkins/secrets/initialAdminPassword
1a669a1a5d994cfdaf1fe0c793298113

创建用户

可用nginx做反向代理,通过80端口提供服务


如何使用Jenkins创建CICD任务?
我们知道,一个典型的CICD操作过程可以抽象为Pipeline形式
◼ 这种类型的Pipeline一般由构建、测试和打包等几个典型阶段组成
◆每个阶段的具体操作过程都可能需要特定工具程序的参与
◆例如maven工程项目多半要依赖maven和jdk环境,而node.js项目则要用到npm工具等,这些工具需要事先经由“系统管
理→全局工具配置”进行配置;
◼ 为便于用户定义CICD的具体步骤,Jenkins为特地提供了不同类型的Job,例如自由风格的作业、Pipeline作业、
Maven工程作业、多配置项目、多分支流水线等;
通常,一个典型的CICD过程拥有输入和输出
◼ 从某个代码仓库中“克隆”代码作为输入,并将生成的结果打包成特定的格式(例如jar、exe、elf或image等)
进行输出,甚至还要推送到目标工件库中(例如DockerHub)以便于存储和分发
◼ 若需要事先完成认证才能访问代码仓库服务及工件库服务时,Jenkins支持将这些认证凭据以安全方式事先定
义,并在Pipeline自动化执行时自动引用;
◆系统管理→管理凭据
Jenkins的系统管理页面

通过插件扩展Jenkins
若要扩展Jenkins的功能,就需要为其安装合用的插件
◼ 插件Hub:https://plugins.jenkins.io/
◼ 支持按类别搜索和关键词搜索等
Jenkins内置的插件管理页面如下图所示
1、“可用插件”即为可安装使用的插件
2、安装和制裁插件需要重启Jenkins,但重启操作应该在Jenkins空闲时进行

下载插件

新建任务

Build Steps

应用保存

回到主页,可看到作业相关信息

执行作业(点击freestyle-job-001,点击立即构建build now,左下角生成构建菜单)

控制台输出

对作业进行配置:克隆代码仓库到本地(到gitlab上拉取,仓库是内部的,需要认证)
认证:使用“凭据”保存敏感数据(manager jenkins选项的manager credentials)



认证完毕,需要在jenkins服务器上对gitlab域名进行解析,解析完毕后对作业进行配置
[root@ubuntu2004 ~]#vim /etc/hosts
[root@ubuntu2004 ~]#ping gitlab.mengfanchao.com
PING gitlab.mengfanchao.com (10.0.0.203) 56(84) bytes of data.
64 字节,来自 gitlab.mengfanchao.com (10.0.0.203): icmp_seq=1 ttl=64 时间=0.905 毫秒
64 字节,来自 gitlab.mengfanchao.com (10.0.0.203): icmp_seq=2 ttl=64 时间=0.381 毫秒
64 字节,来自 gitlab.mengfanchao.com (10.0.0.203): icmp_seq=3 ttl=64 时间=0.605 毫秒
^C
--- gitlab.mengfanchao.com ping 统计 ---
已发送 3 个包, 已接收 3 个包, 0% 包丢失, 耗时 2029 毫秒
rtt min/avg/max/mdev = 0.381/0.630/0.905/0.214 ms


把仓库的克隆地址粘贴到Repository URL

指定main分支(master换成main),点击应用

配置完成后,会自动把对应的仓库克隆到本地,而后把工作目录切换到克隆过来的目录下(应用并保存)

执行作业(点击freestyle-job-001,点击立即构建build now,左下角生成构建菜单,构建完成打开)

流水线定义完成,不会随时就执行,jenkins使用触发器进行触发
如何使用Jenkins创建CICD任务?
如何触发任务?
◼ 使用触发器(Trigger)指定触发机制
◼ 支持的触发机制
◆手动触发
◆定时触发
◆由其它流水线的执行结果触发
◆由特定的事件触发,例如代码仓库上的PR事件等
◆……
将CICD流水线交付的结果部署到目标环境中
◼ 部署新版本的操作过程,是触发系统故障的常见原因之一
◼ 因而,部署操作通常需要人工介入,或借助专用的部署工具遵循特定的部署策略进行
◆滚动部署和金丝雀发布
◆蓝绿部署
◼ 部署操作通常还需要同流量迁移机制协同进行
◼ 需要执行自动化部署时,在Jenkins流水线的定义中,添加一个调用部署工作的步骤即可
流水线执行结束后,其状态通常要存档,并在必要时通知给相关人员
◼ Jenkins使用“构建后操作”来定义这部分操作