小阿轩yx-初识Jenkins持续集成系统
前言
- 随着软件开发复杂度的不断提高,团队成员之间如何更好地协同工作以确保软件开发的质量,已经慢慢成为开发过程中不可回避的问题。
- Jenkins 自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;
- 并且持续集成可以更早的获取代码变更的信息,从而可以更早的进入测试阶段;
- 并且能够更早的发现问题,解决问题的成本就会显著下降。
持续集成
- 缩短了从开发、集成、测试、部署各个环节的时间,也缩短了中间出现的等待时间。
- 也意味着开发、集成、测试、部署得以持续。
- 配置完 Jenkins 持续集成持续交付环境后,就可以把发布的任务交给集成服务器去处理了。
本次使用 Maven(Ant)等来实现 Java 项目自动化构建发布部署。
这些工具可以帮助在构建过程中实现自动化发布、回滚等动作。
什么是 Jenkins
- Jenkins 是一个功能强大的应用程序,允许持续集成和持续交付项目(持续部署),无论用的是什么平台。
- 这是一个免费的源代码,可以处理任何类型的构建或持续集成。
- 集成 Jenkins 可以用于一些测试和部署技术。
- Jenkins 原名 Hudson,2011 年改为现在的名字,它是一个开源的实现持续集成的软件工具。
官方网站网址
Jenkins
- 能实时监控持续集成过程中所存在的问题,提供详细的日志文件和提醒功能,还能通过图表的形式,形象地展示项目构建的趋势和稳定性。
- 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
- 提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。
- 同时能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。
- 可以构建一个自动化的持续集成环境可以使用它来 “自动化” 编译、打包、分发部署应用,它兼容 ant、maven、gradle 等多种第三方构建工具,同时与 svn、git 能无缝集成,也支持直接与知名源代码托管网站,如 github、bitbucket 直接集成
为什么要用 Jenkins
- 目前持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。
- 它是一种实践,旨在缓和和稳固软件的构建过程。
能够帮助开发团队应对如下挑战
软件构建自动化
- 配置完成后,CI 系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建。
构建可持续的自动化检查
- CI 系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检査新增或修改后的代码时,CI 系统会不断确认这些新代码是否破坏了原有软件的成功构建。
- 这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力(说直接一点也是钱啊,哈哈)。
构建可持续的自动化测试
- 构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Email、RSS 等等)给相关的当事人。
生成后后续过程的自动化
- 当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。
- 构件才能更迅速地提供给用户使用。
Jenkins 的特点
- 易安装:从官网仅需要下载一个 jenkins.war 文件后,直接运行,无需额外的安装,更无需安装数据库;
- 易配置:提供友好的 GUI 配置界面;
- 变更支持:Jenkins 能从代码仓库(SV /Git)中获取并产生代码更新列表,并显示到编译输出信息中;
- 支持永久链接:用户是通过 Web 来访问 Jenkins 的,而这些 web 页面的链接地址都是永久链接地址,可以在各种文档中直接使用该链接;
- 集成 E-Mail/RSS/IM:当完成一次集成后,可通过这些工具实时收取集成结果(构建一次集成需要花费一定时间,有了这个功能,就可以在等待结果过程中,干别的事情);
- Junit/TestNG 测试报告:是以图表等形式提供详细的测试报表功能;
- 支持分布式构建:Jenkins 可以把集成构建等工作分发到多台计算机中完成;
- 文件指纹信息:Jenkins 会保存构建集成所产生的 jars 文件、集成构建使用了哪个版本的 jars 文件等构建记录;
- 支持第三方插件:Jenkins 支持第三方插件,这使得 Jenkins 功能变得越来越强大。
什么是 CI/CD
持续集成(Continuous integration)
- 是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。
- 每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
持续部署(continuous deployment)
- 是通过自动化的构建、测试和部署循环来快速交付高质量的产品。
- 某种程度上代表了一个开发团队工程化的程度,毕竟快速运转的互联网公司人力成本会高于机器,投资机器优化开发流程化相对也提高了人的效率,让engineering productivity 最大化。
持续交付(Continuous delivery)
- 是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以释出的状况。
- 它的目标在于让软件的建置、测试与释出变得更快以及更频繁。
- 这种方式可以减少软件开发的成本与时间,减少风险。
持续集成的特点
- 是一个自动化的、周期性的集成测试过程,检出代码、编译构建、运行测试、结果记录、测试统计等过程都是自动完成的,无需人工干预。
- 需要有专门的集成服务器来执行集成构建操作,同时需要有代码托管工具的支持。
持续集成的工作原理
- Jenkins 的工作原理是先将源代码从 SV/Git 版本控制系统中拷贝一份到本地,然后根据设置的脚
- 本进行 build(构建)。
- 整个系统的关键就是 build 脚本,build 脚本告诉 Jenkins 在一次集成中需要执行的任务。
Jenkins 的部署
设备列表
主机 | 操作系统 | 主机名/IP地址 | 主要软件 |
服务器 | CentOS7.9 | Gitlab:192.168.10.105 | Gitlab |
服务器 | CentOS7.9 | Jenkins:192.168.10.104 | Jenkins |
案例拓扑
Jenkins 基本环境的安装与设置
安装 docker
- Jenkins 持续集成环境可以和 Harbor 镜像仓库、docker 主机、kubernetes 等共同建立一个流水线环境,在这种环境下,Jenkins 可以将maven 项目打包为镜像,并将镜像推送至 Harbor,考虑到如果需要在 Jenkins 主机上生成镜像并推送至 Harbor,Jenkins 主机就需要有一个 docker 环境具体安装步骤。
(如果已有 docker 环境,此步骤可以略过)。
操作系统设置
修改主机名
主机一
[root@localhost ~]# hostnamectl set-hostname jenkins
[root@localhost ~]# bash
主机二
[root@localhost ~]# hostnamectl set-hostname gitlab
[root@localhost ~]# bash
开启会话同步
关闭防火墙、内核机制和网络管理器
[root@gitlab ~]# systemctl stop firewalld
[root@gitlab ~]# systemctl disable firewalld
[root@gitlab ~]# systemctl stop NetworkManager
[root@gitlab ~]# systemctl disable NetworkManager
[root@gitlab ~]# setenforce 0
[root@gitlab ~]# vim /etc/sysconfig/selinux
##修改为
SELINUX=disabled
[root@jenkins ~]# systemctl stop firewalld
[root@jenkins~]# systemctl disable firewalld
[root@jenkins~]# systemctl stop NetworkManager
[root@jenkins~]# systemctl disable NetworkManager
[root@jenkins~]# setenforce 0
[root@jenkins ~]# vim /etc/sysconfig/selinux
##修改为
SELINUX=disabled
取消会话同步
安装 git
- 为了让 Jenkins 支持从 Gitlab 拉取源码,需要安装 Git 插件以及在 centos7 上安装 Git 工具。
[root@jenkins ~]# yum -y install git
安装字体
[root@jenkins ~]# yum -y install fontconfig
安装 java 环境
将所需 JDK 包上传至服务器(104)
解压
[root@jenkins ~]# tar zxvf jdk-11.0.16.1_linux-x64_bin.tar.gz
移动文件到指定目录下
[root@jenkins ~]# mv jdk-11.0.16.1 /usr/local/java
- Fontconfig 是一款字体配置工具,它允许用户在 Linux、macos 和 windows 等操作系统上配置字体。
- Fontconfig 的设计目标是提供一个易于使用的命令行工具,用于管理字体文件和配置字体。
- 这个包是 Jenkins 的依赖包,必须安装,否则,jenkins 无法启动。
设置 java 的环境变量
[root@jenkins ~]# vim /etc/profile
##在末尾添加
export JAVA_HOME=/usr/local/java
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
让文件立即生效
[root@jenkins ~]# source /etc/profile
查看 java 版本
[root@jenkins ~]# java -version
java version "11.0.16.1" 2022-08-18 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.16.1+1-LTS-1)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.16.1+1-LTS-1, mixed mode)
安装 tomcat
将所需的 tomcat 包上传至服务器(104)
解压
[root@jenkins ~]# tar zxvf apache-tomcat-9.0.8.tar.gz
移动文件到指定目录下
[root@jenkins ~]# mv apache-tomcat-9.0.8 /usr/local/tomcat
为 Jenkins 安装 maven 环境
将所需的 maven 包上传至服务器(104)
解压
[root@jenkins ~]# tar zxvf apache-maven-3.8.6-bin.tar.gz
移动文件到指定目录下
[root@jenkins ~]# mv apache-maven-3.8.6 /usr/local/maven
设置 java 和 maven 的环境变量
[root@jenkins ~]# vim /etc/profile
##在末尾添加
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin
- export MAVEN_HOME=/usr/local/maven
- export PATH=$PATH:$MAVEN_HOME/bin
让文件立即生效
[root@jenkins ~]# source /etc/profile
查看 maven 版本
[root@jenkins ~]# mvn -version
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: /usr/local/maven
Java version: 11.0.16.1, vendor: Oracle Corporation, runtime: /usr/local/java
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "6.9.7-1.el7.elrepo.x86_64", arch: "amd64", family: "unix"
修改 maven 更新源
[root@jenkins ~]# vim /usr/local/maven/conf/settings.xml
##修改 maven 的仓库
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
阿里提供了 maven 更新源,可访问阿里官方网站查看详细信息。
为 jenkins 安装 NodeJS
- 对 Node]s 项目进行构建的时候,需要 g++ 的编译环境,不同的项目 Node]s 的版本也不一样,在进行部署的时候要根据项目的依赖版本进行选择。
[root@jenkins ~]# yum -y install gcc* automake autoconf libtool make
将所需的 node 包上传至服务器(104)
解压
[root@jenkins ~]# tar zxvf node-v14.18.0-linux-x64.tar.gz
移动文件到指定目录下
[root@jenkins ~]# mv node-v14.18.0-linux-x64 /usr/local/nodejs14
链接文件
[root@jenkins ~]# ln -s /usr/local/nodejs14/bin/* /usr/local/bin/
Jenkins 的安装与初始化设置
将所需的 jenkins 脚本上传至服务器(104)
拷贝 jenkins 包到指定目录下
[root@jenkins ~]# cp jenkins.war /usr/local/tomcat/webapps/
进入目录
[root@jenkins ~]# cd /usr/local/tomcat/bin/
启动程序
[root@jenkins bin]# sh startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
查看状态
[root@jenkins bin]# netstat -anpt | grep java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1852/java
tcp6 0 0 :::8080 :::* LISTEN 1852/java
tcp6 0 0 :::8009 :::* LISTEN 1852/java
- 将 jenkins.war 文件保存到 Tomcat 服务的 /usr/local/tomcat/webapps 目录下。
- 启动 Tomcat就会自动部署 Jenkins。
切换目录
[root@jenkins bin]# cd /root/.jenkins/updates/
设置 jenkins 插件更新源
删除原有的文件
[root@jenkins updates]# rm -rf default.json
将新的文件上传至服务器 updates 目录下(104)
目录千万不能错
- default.json 文件需要 jenkins 初始化结束才能出来。此处需要稍等片刻。
Jenkins 初始化
登录 Jenkins
访问网址
- http://192.168.10.104:8080/jenkins
查看初始密码
[root@jenkins updates]# cat /root/.jenkins/secrets/initialAdminPassword
ed9e6401c42e4814b4426e6bf498e71b
选择插件安装方式
- 此处是在安装 Jenkins 过程中添加插件,也可以使用 “选择插件安装” 选项,跳过插件安装过程,等待 Jenkins 安装好后,登录到 Jenkins 再安装插件。
创建管理员账号
- 本案例将初始的管理员账号和密码都设置为 admin
结束安装
Jenkins 插件管理
修改 Jenkins 插件安装为国内源地址
- 安装 Jenkins 时,选择默认安装插件会很慢,甚至会失败,因此安装时可以取消所有插件安装,跳过这一步,待 Jenkins 启动后,修改插件安装地址,安装插件。
设置国内插件源
- 进入Manage Jenkins --> Plugins --> Advanced settings 最下面有 Update site(升级站点),设置为如下链接,并点 “提交” 按钮。
https://mirrors,tuna.tsinghua.edu.cn/ienkins/updates/update-center.ison
重启 Jenkins 服务
[root@jenkins ~]# /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[root@jenkins ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
安装插件
- 点击 “Manage jenkins” --> “Plugins” --> “Avalable plugins”,输入要安装的插件,并勾选列出来的插件,然后点安装。
本课程内可能会用的插件
- Git Parameter
- Git Pipeline for Blue Ocean
- GitLab
- Blue Ocean
- Blue Ocean Pipeline Editor
- Blue Ocean core Js
- Pipeline SCM API for Blue Ocean
- Dashboard for Blue Ocean
- Build with Parameters
- extended Choice ParameterKubernetes
- Kubernetes CLI
- Kubernetes credentialsImage Tag Parameter
- Active Choices
- SSH
- ansible
- Maven IntegrationPublish over sSH
- Role-based Authorization Strategy
- Node]s
- Git
- Credentials
- Credentials Binding
- Dynamic Extended Choice Parameter plug-In
- Dynamic Parameter Plug-In
- Pipeline
- Pipeline:Declarative
- Localization:Chinese(Simplified)
- 红色的在初始化过程中已经安装上去的,此处可以不用再安装,如果在初始过程中没有安装,或安装不完全,此处可以都安装上去,为其他项目的实施提供可用功能。
Jenkins 角色与权限管理
- 我们可以利用 Role-based Authorization strategy 插件来管理 Jenkins 用户权限,在前面的插件安装中已经安装过此插件。
开启权限全局安全配置
- “Dashboard” --> “Manage Jenkins” --> “Security” --> “Authentication”
- 将授权策略修改为 “Role-Based strategy”,并保存设置。
创建角色
- 为了更方便的为用户授权,jenkins 中使用角色作为一类权限的容器。
- 角色是一组相关权限的集合。
- 可以为用户指定角色,而不是直接指定权限。
角色种类
- Global roles:Global roles(全局角色):管理员等高级用户可以创建基于全局的角色
- Item roles:针对某个或者某些项目的角色
- Agent roles:节点相关的权限
设置角色
- “Dashboard” --> “Manage Jenkins” --> “Manage and Assing Roles”。
- 点击“Manage Roles
本案例中添加三个角色
- baseRole:该角色为全局角色。这个角色需要绑定 overall 下面的 Read 权限,是为了给所有用户绑定最基本的 Jenkins 访问权限。
- 如果不给后续用户绑定这个角色,会报错误:用户名ismissing the overall/Read permission
- role1:该角色为项目角色。使用正则表达式绑定"my-item01.*",意思是只能操作名称为 “my-item01” 开头的项目。
- role2:该角色也为项目角色。绑定"my-item02.*",意思是只能操作 “my-item2” 开头的项目。
添加 baseRole 角色到 Global roles
添加 role1 和 role2 角色到 Item roles
- 在 “Role to add” 中填写角色名称 “role1”;
- “Pattern” 中填写 “my-item1.*”,表示 role1 的角色只能管理 “my-item01.*” 开头的项目添加好后点 Save 保存。
创建用户
添加新用户
- “Dashboard” --> “Manage Jenkins” --> “Users”,再右上角点击“create User”,创建用户。
填写账号信息
创建好后的效果
给用户分配角色
- “Dashboard” --> “Manage Jenkins” --> “Manage and Assign Roles”,然后点击 “Assign Roles” 进入到分配角色的界面。
为 zhangsan 用户绑定 baseRole 和 role1 角色
- 在 “Global roles” 中点击 “Add User” 按钮,在弹框中输入用户 zhangsan,确定后勾选角色 baseRole;
- 在 “Item roles” 中点击 “Add User” 按钮,在弹框中输入用户 zhangsan,确定后勾选角色 role1。
为 lisi 用户绑定 baseRole 和 role2 角色
用同样的方法为 lisi 设置角色。
- 在 “Global roles” 中点击 “Add user” 按钮,在弹框中输入用户 lisi,确定后勾选角色 baseRole;
- 在 “Item roles” 中点击 “Add User” 按钮,在弹框中输入用户 lisi,确定后勾选角色 role2。
- 设置好后,点击 Save 保存。
创建项目测试权限
创建项目
用管理员的权限创建两个项目,名字分别是 my-item01-zhangsan 和 my-item02-lisi
分别用 zhangsan 和 lisi 的身份登录系统
可以发现,每个用户只能管理属于自己角色范围内的项目。
Jenkins 凭证管理
- 有许多第三方网站和应用程序可以与 Jenkins 进行交互
- 例如程序代码仓库,云存储系统和服务等。
- 此类应用程序的系统管理员可以在应用程序中配置凭据以专供 Jenkins 使用。
- 通常通过将访问控制应用于这些凭据来完成这项工作,以 “锁定” Jenkins 可用的应用程序功能区域。
- 一旦 Jenkins 管理员(即管理 Jenkins 站点的 Jenkins 用户)在 Jenkins 中添加/配置这些凭据,Pipeline 项目就可以使用凭据与这些第三方应用程序进行交互。
用管理员登录到 jenkins。
要在 Jenkins 使用凭证管理功能,需要安装Credentials Binding插件,前面已经安装过此插件,这里不再安装。
- 凭据可以用来存储需要密文保护的数据库密码、Gitlab 密码信息、Docker 私有仓库密码等,以便Jenkins 可以和这些第三方的应用进行交瓦。
凭据的种类
jenkins 提供了多种类型的凭据,适应与不同的业务需求,具体类型如下
- Username with password:用户名和密码
- GitHub App:GitHub 应用进行身份验证
- GitLab API token:存储 Gitlab 的用户 API token
- OpenShift Username and password:存储 OpenShift 的用户名和密码
- SSH Username with private key: 使用 SSH 用户和密钥
- Secret file:需要保密的文本文件,使用时 Jenkins 会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file 就会被删除
- Secret text:需要保存的一个加密的文本串,如钉钉机器人或 Github 的 api token
- Certificate:通过上传证书文件的方式
常用的凭证类型
- Username with password(用户密码)
- SSH Username with privatekey(SSH 密钥)
使用 Git 工具到 Gitlab 拉取项目源码演示 Jenkins 的如何管理 Gitlab的凭证。
为了让 Jenkins 支持从 Gitlab 拉取源码,需要安装 Git 插件以及在 Cent0s7 系统上安装 Git工具。
凭据的作用范围
- 凭证具有与它们相关联的范围。
- 这是一种表示它们如何才能被暴露的方式。
Jenkins 使用的主要范围有2种
system(系统)
- 顾名思义,这个范围与根上下文,也就是 Jenkins 系统相关联。
- 此范围中的凭证只被暴露给系统和后台任务,并且一般被用于连接到构建节点或代理节点等。
全局
- 全局范围是默认选项,通常用来确保 Jenkins 中的任务可以使用凭证。
添加用户密码类型的凭据
添加凭据
- “Manage jenkins” --> “credentials”,打开如下页面,并点击 “system”,进入全局凭据管理界面
如下界面中,点击右上角的 “Add credentials” 按钮,添加凭据
填写凭据参数
这里主要的内容有
- 凭据类型:Username withpassword
- 范围:Global
- 用户名:root(该账号是 gitlab 中添加的账号)
- 密码:gitlab 中为 root 用户设置的密码(本案例此处为 pwd12345,注意不是系统的 root 密码)
- ID:选填(设置凭据的唯一标识,不设置会自行分配一个唯一标识)
- 描述:选填(凭据名称,此处最好填写一下,使用凭据的时候便于识别,不设置就使用用户名)
点击 Create 创建此凭据
测试凭据
登录到 gitlab 中添加一个项目
- 登录到 gitlab,导入项目(本案例使用root 用户登录)
- 导入gitee 上的项目,访问级别使用私有类型
- https://gitee.com/kgc-wjq/league.git
复制出 HTTP 的仓库 URL
- http://192.168.10.105/root/league.git
创建测试项目 test01
创建一个 Freestyle 项目
- 新建 Item --> Freestyle Project --> 确定
源码管理中设置仓库 URL 和凭据
- 源码管理中点 “Git”,代码仓库的 URL为 http://192.168.10.105/root/league.git
- 并选择 Gitlab 中 root 的凭据。最后保存设置。
测试代码拉取
- 点击 Build Now,立即构建此项目
- 可以在控制台输出查看构建日志
查看拉取到的 jenkins 主机
在 jenkins 主机的工作空间目录下,已经能够看到代码拉取到了 jenkins 主机本地。
[root@jenkins ~]# ls /root/.jenkins/workspace/
test01 test01@tmp
添加 SSH 类型的凭据
- SSH 类型的凭据可以使 Jenkins 在拉取 gitlab 中的代码时使用秘钥对的方式,不仅实现了免密连接,同时也会对数据进行加密,是一种安全可靠的凭据方式。
在 jenkins 主机上以 root 身份生成密钥对
[root@jenkins ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:dREG3rikd5KyqtVomuhAmLGFe1Rq3aGqYjqKbj+wwVQ root@jenkins
The key's randomart image is:
+---[RSA 2048]----+
| . . ..+. |
| . E o . . + . |
|o * o . = o |
|.X . + + |
|B.o S = . |
|.* o + o |
|+.+ + o |
|*+ o = . |
|B++.=.. |
+----[SHA256]-----+
进入目录
[root@jenkins ~]# cd .ssh/
复制公钥
[root@jenkins .ssh]# ls
id_rsa id_rsa.pub
- 其中 id rsa 为私钥文件
- id_rsa.pub 为公钥文件
将公钥存放到 gitlab
- 用 root 用户登录 gitlab,点击右上角的头像,在下拉菜单中点 “preferences”,然后在左侧列表点击 “SSH Keys”
在 jenjins 中添加 SSH 凭据
- “Manage jenkins” --> “Credentials”,打开如下页面,并点击“system”,进入全局凭据管理界
填写 SSH 凭据参数
主要的参数有
- 类型:SSH
- 范围:Global
- ID:可选
- 描述:可选
- Username:root(这个秘钥对是用root 的身份生成的)
- Private Key:填写 root 生成的私钥
添加好的状态
测试凭据
- 到 gitlab 中查看 SSH 的仓库链接,并复制下来以 root 的身份登录到 gitlab,并复制出 SSH 的仓库 URL。
git@192.168.10.105:root/league.git
创建测试项目 test02
在源码管理中设置 git 参数
- 将仓库的 ssh 链接粘贴到仓库 URL处,并在下面选择 ssh 凭据
构建项目测试
- 点击 “Build New”,查看构建结果
查看工作区域
[root@jenkins ~]# ls /root/.jenkins/wookspace/
test01 test01@tmp test02 test02@tmp
- 此处已经将 gitlab 中的项目拉取到了 Jenkins 本地。
小阿轩yx-初识Jenkins持续集成系统