锦通 发表于 2025-1-5 23:39:45

Git+Jenkins基本使用

Jenkins是一个开源的实现持续集成的软件工具
持续集成的作用


[*]保证团队开发职员提交代码的质量,减轻软件发布的压力
[*]主动完成各个环节的任务,无需太多的人工干预,有利于减少重复过程,以节省时间、费用和工作量
持续集成的特点


[*]是一个主动化的、周期性的集成测试过程
[*]检出代码、编译构建、运行测试、结果纪录、测试统计等操作都是主动完成的,无需人工干预
[*]须要有专门的集成服务器来执行集成构建
[*]须要有代码托管工具支持
持续集成的工作原理
https://i-blog.csdnimg.cn/direct/33f9306b848a4065bc39a7537c27766c.png
Maven先容


[*]基于项目对象模型(POM),可以通过一小段形貌信息管理项目标构建、陈诉和文档的软件项目管理工具
[*]除了以程序构建能力为特色外,还提供高级项目管理工具
[*]缺省构建规则有较高的可重用性
Jenkins的摆设
https://i-blog.csdnimg.cn/direct/6f07d27fd6f842c894406fd7c77fcea6.png
操作体系设置
# hostnamectl set-hostname jenkins
# bash
# systemctl stop firewalld && systemctl disable firewalld
# systemctl stop NetworkManager && systemctl disable NetworkManager
# sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config
# setenforce 0
3:安装git
为了让Jenkins支持从Gitlab拉取源码,须要安装Git插件以及在CentOS7上安装Git工具。
# yum install -y git
4:安装java情况
(1)安装java
# yum -y install fontconfig
# tar zxvf jdk-11.0.16.1_linux-x64_bin.tar.gz
# mv jdk-11.0.16.1 /usr/local/java
注意:
Fontconfig是一款字体配置工具,它允许用户在Linux、macOS和Windows等操作体系上配置字体。Fontconfig的设计目标是提供一个易于使用的下令行工具,用于管理字体文件和配置字体。这个包是Jenkins的依靠包,必须安装,否则,jenkins无法启动。
(2)设置java的情况变量
# vim /etc/profile
#在文件末尾添加:
export JAVA_HOME=/usr/local/java/
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
# source /etc/profile
(3)查察java版本
# 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)
5:安装tomcat
# tar zxvf apache-tomcat-9.0.8.tar.gz
# mv apache-tomcat-9.0.8 /usr/local/tomcat
6:为Jenkins安装maven情况
(1)安装maven
# tar zxvf apache-maven-3.8.6-bin.tar.gz
# mv apache-maven-3.8.6 /usr/local/maven
(2)设置java和maven的情况变量
# vim /etc/profile
#在文件末尾添加:
export JAVA_HOME=/usr/local/java/
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin
# source /etc/profile
(3)查察maven版本
# 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:"3.10.0-1160.el7.x86_64", arch: "amd64", family:"unix"
(4)修改maven更新源
# vim /usr/local/maven/conf/settings.xml
#修改maven的堆栈:

  aliyunmaven
  *
  阿里云公共堆栈
 https://maven.aliyun.com/repository/public

备注:
阿里提供了maven更新源,可访问阿里官方网站查察详细信息。
堆栈服务
7:为jenkins安装NodeJS
在对NodeJS项目进行构建的时候,须要g++的编译情况,不同的项目NodeJS的版本也不一样,在进行摆设的时候要根据项目标依靠版本进行选择。
# yum -y install gcc automake autoconf libtool make
# yum -y install gcc gcc-c++
# tar zxvf node-v14.18.0-linux-x64.tar.gz
# mv node-v14.18.0-linux-x64 /usr/local/nodejs14
# ln -s /usr/local/nodejs14/bin/* /usr/local/bin
四:Jenkins的安装与初始化设置
1:安装Jenkins
# cp jenkins.war /usr/local/tomcat/webapps/
# cd /usr/local/tomcat/bin/
# sh startup.sh
# netstat -anpt | grep java
tcp6       0      0 :::8009                 :::*                 LISTEN      2609/java          
tcp6       0      0 :::8080                 :::*                 LISTEN      2609/java          
tcp6       0      0 127.0.0.1:8005          :::*                LISTEN      2609/java       
将jenkins.war文件保存到Tomcat 服务的 /usr/local/tomcat/webapps目录下。启动 Tomcat 就会主动摆设Jenkins。
2:设置jenkins插件更新源
cd /root/.jenkins/updates
sed -i 's/https:\/\/www.jenkins.io/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
sed -i 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
注意:
default.json 文件须要jenkins初始化结束才气出来。此处须要稍等半晌。
3:Jenkins初始化
(1)登录Jenkins
访问网址:http://192.168.10.30:8080/jenkins
https://i-blog.csdnimg.cn/direct/33f3185994b54e7989286fb72d583afb.png
查察初始密码:
cat/root/.jenkins/secrets/initialAdminPassword
(2)选择插件安装方式
https://i-blog.csdnimg.cn/direct/cf6f9f25325640bc85bd1db0bd05265a.png
注意:
此处是在安装Jenkins过程中添加插件,也可以使用“选择插件安装”选项,跳过插件安装过程,等待Jenkins安装好后,登录到Jenkins再安装插件。
https://i-blog.csdnimg.cn/direct/2aee8d8afb1749479b2f7014bd09c5d3.png
(3)创建管理员账号
本案例将初始的管理员账号和密码都设置为admin
https://i-blog.csdnimg.cn/direct/d916a07f58df43f1aa535149c1157cb7.png
(4)结束安装
https://i-blog.csdnimg.cn/direct/5df6ef75ea9d47e3b875b5b5c0d34fc2.png
https://i-blog.csdnimg.cn/direct/1361966404984a84921edb150fd70506.png
五:Jenkins插件管理
1:修改Jenkins插件安装为国内源地址
在安装Jenkins时,选择默认安装插件会很慢,乃至会失败,因此安装时可以取消所有插件安装,跳过这一步,待Jenkins启动后,修改插件安装地址,安装插件。
(1)设置国内插件源
进入Manage Jenkins–>Plugins—>Advanced settings最下面有Update Site(升级站点),设置为如下链接,并点“提交”按钮。
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
(2)重启Jenkins服务
# /usr/local/tomcat/bin/shutdown.sh
# /usr/local/tomcat/bin/startup.sh
2:安装插件
点击“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 Parameter
Kubernetes
Kubernetes CLI
Kubernetes Credentials
Image Tag Parameter
Active Choices
SSH
ansible
Maven Integration
Publish Over SSH
Role-based Authorization Strategy
NodeJS
Git
Credentials
Credentials Binding
Dynamic Extended ChoiceParameter Plug-In
Dynamic Parameter Plug-In
Pipeline
Pipeline: Declarative
Localization: Chinese(Simplified)
注意:
赤色的在初始化过程中已经安装上去的,此处可以不消再安装,如果在初始过程中没有安装,或安装不完全,此处可以都安装上去,为其他项目标实行提供可用功能。
提示:可以在此处做一个快照,方便后续实行
六:Jenkins角色与权限管理
我们可以利用Role-based Authorization Strategy 插件来管理Jenkins用户权限,在前面的插件安装中已经安装过此插件。
1:开启权限全局安全配置
“Dashboard”-->“Manage Jenkins”-->“Security”-->“Authentication”
将授权策略修改为“Role-BasedStrategy”,并保存设置。
https://i-blog.csdnimg.cn/direct/12e7d93cc31448c091d56ef1d2a75400.png
2:创建角色
为了更方便的为用户授权,jenkins中使用角色作为一类权限的容器。角色是一组相干权限的聚集。可以为用户指定角色,而不是直接指定权限。
(1)角色种类
Global roles:Global roles(全局角色):管理员等高级用户可以创建基于全局的角色
Item roles:针对某个或者某些项目标角色
Agent roles:节点相干的权限
(2)设置角色
“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-item02”开头的项目。
(3)添加baseRole角色到Global roles
https://i-blog.csdnimg.cn/direct/44d0a0cc297f4451924e30f349db14db.png
(4)添加role1和role2角色到Item roles
在“Role to add”中填写角色名称“role1”;“Pattern”中填写“my-item01.*”,表示role1的角色只能管理“my-item01.*”开头的项目添加好后点Save保存。
https://i-blog.csdnimg.cn/direct/97ce1b599d9745cd84fd590f843055c5.png
https://i-blog.csdnimg.cn/direct/40a5a85a3318429291ed5ce63e8d88aa.png
3:创建用户
(1)添加新用户
“Dashboard”-->“Manage Jenkins”-->“Users”,在右上角点击“Create User”,创建用户。
https://i-blog.csdnimg.cn/direct/e0551ae15a494159b6a885313cac2893.png
(2)填写账号信息
https://i-blog.csdnimg.cn/direct/11d7c57a132e4c80801cff284575a12f.png
(3)创建好后的结果
https://i-blog.csdnimg.cn/direct/0d3380d663144b30b145954e332e2d8b.png
4:给用户分配角色
“Dashboard”-->“Manage Jenkins”-->“Manage and Assign Roles”,然后点击“Assign Roles”。进入到分配角色的界面。
(1)为zhangsan用户绑定baseRole和role1角色
在“Global roles”中点击“Add User”按钮,在弹框中输入用户zhangsan,确定后勾选角色baseRole;
在“Item roles”中点击“Add User”按钮,在弹框中输入用户zhangsan,确定后勾选角色role1。
https://i-blog.csdnimg.cn/direct/bb2cf04af4df4193977d638930bc91c1.png
https://i-blog.csdnimg.cn/direct/6283816a0402437fa5bf392645fe1771.png
(2)为lisi用户绑定baseRole和role2角色
用同样的方法为lisi设置角色。
在“Global roles”中点击“Add User”按钮,在弹框中输入用户lisi,确定后勾选角色baseRole;
在“Item roles”中点击“Add User”按钮,在弹框中输入用户lisi,确定后勾选角色role2。
设置好后,点击Save保存。
https://i-blog.csdnimg.cn/direct/f5e992750d424300adf22166fdf1344f.png
5:创建项目测试权限
(1)创建项目
用管理员的权限创建两个项目,名字分别是my-item01-zhangsan和my-item02-lisi
https://i-blog.csdnimg.cn/direct/bc73373ab0c24a2ab220930e9b5c5364.png
(2)分别用zhangsan和lisi的身份登录体系
可以发现,每个用户只能管理属于本身角色范围内的项目。
https://i-blog.csdnimg.cn/direct/1661f255a1994c81934b776d9a2f2cef.png
https://i-blog.csdnimg.cn/direct/f57a4df0d5764421bbda71300042fa27.png
七:Jenkins凭据管理
有许多第三方网站和应用程序可以与 Jenkins 进行交互,例如程序代码堆栈,云存储体系和服务等。
此类应用程序的体系管理员可以在应用程序中配置凭据以专供 Jenkins 使用。通常通过将访问控制应用于这些凭据来完成这项工作,以“锁定”Jenkins可用的应用程序功能地区。一旦Jenkins 管理员(即管理 Jenkins 站点的 Jenkins 用户)在 Jenkins 中添加/配置这些凭据,Pipeline 项目就可以使用凭据与这些第三方应用程序进行交互。​​
用管理员登录到jenkins。
要在Jenkins使用凭据管理功能,须要安装CredentialsBinding插件,前面已经安装过此插件,这里不再安装。
凭据可以用来存储须要密文掩护的数据库密码、Gitlab密码信息、Docker私有堆栈密码等,以便Jenkins可以和这些第三方的应用进行交互。
1:凭据的种类
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(用户密码)和SSHUsername with private key(SSH密钥) 。接下来以使用Git工具到Gitlab拉取项目源码为例,演示Jenkins的怎样管理Gitlab的凭据。
注意:为了让Jenkins支持从Gitlab拉取源码,须要安装Git插件以及在CentOS7体系上安装Git工具。
2:凭据的作用范围
凭据具有与它们相干联的范围。这是一种表示它们怎样才气被袒露的方式。Jenkins 使用的重要范围有如下2种。
(1)System(体系)
顾名思义,这个范围与根上下文,也就是 Jenkins 体系相干联。此范围中的凭据只被袒露给体系和背景任务,而且一般被用于连接到构建节点或代理节点等。
(2)全局
全局范围是默认选项,通常用来确保 Jenkins 中的任务可以使用凭据。
1:添加用户密码范例的凭据
(1)添加凭据
“Manage jenkins”-->“Credentials”,打开如下页面,并点击“System”,进入全局凭据管理界面,如下图所示。
https://i-blog.csdnimg.cn/direct/27728b60ad224bb5b1b4140526e9f1ff.png
在如下界面中,点击右上角的“AddCredentials”按钮,添加凭据
https://i-blog.csdnimg.cn/direct/0f3b5e0335a4426d893761ce42992268.png
(2)填写凭据参数
这里重要的内容有:
凭据范例:Username with password
范围:Global
用户名:root(该账号是gitlab中添加的账号)
密码:gitlab中为root用户设置的密码(本案例此处为pwd12345,注意不是体系的root密码)
ID:选填(设置凭据的唯一标识,不设置会自行分配一个唯一标识)
形貌:选填(凭据名称,此处最好填写一下,使用凭据的时候便于识别,不设置就使用用户名)
https://i-blog.csdnimg.cn/direct/a5d67e7a5289422bb457fca77a683733.png
点击Create创建此凭据,添加结果如下:
https://i-blog.csdnimg.cn/direct/b1dea1e8166e432e92c73ebb37ee587b.png
(3)测试凭据
1)到gitlab中添加一个项目
登录到gitlab,导入项目(本案例使用root用户登录)。导入gitee上的项目,访问级别使用私有范例,链接如下:
wangjunqing/league
https://i-blog.csdnimg.cn/direct/62436a8472b945a995bb5ca346152364.png
2)复制出HTTP的堆栈URL
http://192.168.10.105/root/league.git
https://i-blog.csdnimg.cn/direct/0cdc4c07e30841ebaeef10e5aa3e910e.png
3)创建测试项目test01
创建一个FreeStyle项目:新建Item->FreeStyle Project->确定
https://i-blog.csdnimg.cn/direct/1476953787e547ff8d862601d56bdb3d.png
3)源码管理中设置堆栈URL和凭据
在源码管理中点“Git”,代码堆栈的URL为http://192.168.10.105/root/league.git。
并选择Gitlab中root的凭据。最后保存设置。
https://i-blog.csdnimg.cn/direct/1ed42c261f0849929e17b71627db6588.png
4)测试代码拉取
点击Build Now,立刻构建此项目。可以在控制台输出查察构建日志。
https://i-blog.csdnimg.cn/direct/6e90848e46b8457c91a86ed626819e99.png
https://i-blog.csdnimg.cn/direct/d27f0b3ec014437a8dce829b6edf9fc0.png
4)查察拉取到jenkins主机中的代码
在jenkins主机的工作空间目录下,已经能够看到代码拉取到了jenkins主机本地。
# ls /root/.jenkins/workspace/
test01  test01@tmp
2:添加SSH范例的凭据
SSH范例的凭据可以使Jenkins在拉取gitlab中的代码时使用秘钥对的方式,不但实现了免密连接,同时也会对数据进行加密,是一种安全可靠的凭据方式。
https://i-blog.csdnimg.cn/direct/e731fe4ed26641b394f0c1b165354993.png
(1)在jenkins主机上以root身份生成密钥对
# 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:eTCFVG4OyBd6pleEkgTmiQWXpdEdM8bx3oVPXY1j+4U root@jenkins
The key's randomart image is:
+-------+
|  ..**o=O*+    .o|
|   *.=++=O   .+.o|
|  . + +.B = ..o+.|
|       = X . +E .|
|      . S + . ...|
|       . .      .|
|                 |
|                 |
|                 |
+---------+
(2)复制公钥
# cd .ssh/
# ls
id_rsa  id_rsa.pub
此中id_rsa为私钥文件,id_rsa.pub为公钥文件。
(3)将公钥存放到gitlab
用root用户登录gitlab,点击右上角的头像,在下拉菜单中点“preferences”,然后在左侧列表点击“SSH Keys”。
https://i-blog.csdnimg.cn/direct/33414d8d8afa41a0810f731e4ce51e86.png
添加乐成后的结果如下如图所示:
https://i-blog.csdnimg.cn/direct/3313d6c6a56c4d6f9943b67adf0cdeae.png
(4)在jenkins中添加SSH凭据
“Manage jenkins”-->“Credentials”,打开如下页面,并点击“System”,进入全局凭据管理界
https://i-blog.csdnimg.cn/direct/933dc82c6573423fa49b2784511edf68.png
(5)填写SSH凭据参数
这里重要的参数有:
范例:SSH
范围:Global
ID:可选
形貌:可选
Username:root(这个秘钥对是用root的身份生成的)
Private Key:填写root生成的私钥。
https://i-blog.csdnimg.cn/direct/67bd674266be45c48f510fd04736d252.png
(6)添加好的状态如下
https://i-blog.csdnimg.cn/direct/aa3c43442f494cc993eaaf6681412377.png
(7)测试凭据
1)到gitlab中查察SSH的堆栈链接,并复制下来
以root的身份登录到gitlab,并复制出SSH的堆栈URL。
git@192.168.10.105:root/league.git
https://i-blog.csdnimg.cn/direct/66356a2a846f4836b97d1d82e2987cf8.png
2)创建测试项目test02
https://i-blog.csdnimg.cn/direct/4157c68595164cb29db40c5b727441af.png
3)在源码管理中设置git参数
将堆栈的ssh链接粘贴到堆栈URL处,并在下面选择ssh凭据。
https://i-blog.csdnimg.cn/direct/28f12803399e482e8bb5c708bd748a95.png
注意:
在使用秘钥对时,要提前在jenkins主机上生成gitlab主机的fingerprint,否则,此处会提示错误。错误信息如下:
https://i-blog.csdnimg.cn/direct/1e64e28448fe4dac9db05ac8dbab464e.png
可以用jenkins主机的ssh下令连接一次gitlab主机,第一次连接的话可以看到提示: “Are you sure you want to continue connecting(yes/no)? yes”,输入yes并回车即可生成gitlab主机的fingerprint。另外,如果使用秘钥对的凭据,在选择凭据的地方选择我“无”也可以。
4)构建项目测试
点击“Build New”,查察构建结果。
https://i-blog.csdnimg.cn/direct/db02a52e83524f819aa5f74107b156a8.png
5)查察工作地区
# ls /root/.jenkins/workspace/
test01  test01@tmp  test02 test02@tmp
此处已经将gitlab中的项目拉取到了Jenkins本地。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Git+Jenkins基本使用