侧边栏壁纸
博主头像
孔子说JAVA博主等级

成功只是一只沦落在鸡窝里的鹰,成功永远属于自信且有毅力的人!

  • 累计撰写 292 篇文章
  • 累计创建 132 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

Jenkins入门教程-2:Ubuntu下Jenkins安装指南及详细配置

孔子说JAVA
2022-05-09 / 0 评论 / 0 点赞 / 209 阅读 / 13,019 字 / 正在检测是否收录...

Jenkins是一款开源自动化服务器,旨在自动化连续集成和交付(CICD)软件所涉及的重复技术任务。本文主要讲解 Ubuntu20.04 下的Jenkins安装指南及支持CICD的详细配置。同时文章还详细介绍了插件下载慢以及插件安装失败的解决方案。

  • 持续集成(CI)是一种 DevOps 实践,团队成员定期将代码更改提交到版本控制存储库,然后运行自动生成和测试。
  • 持续交付(CD)是一系列实践,其中代码更改会自动生成、测试并部署到生产环境中。

Jenkins自动化部署实现原理

858186-20190804162611917-80438542

1、基本环境:

  1. jdk环境,Jenkins是java语言开发的,因需要jdk环境。
  2. git/svn客户端,因一般代码是放在git/svn服务器上的,我们需要拉取代码。
  3. maven客户端,因一般java程序是由maven工程,需要maven打包,当然也有其他打包方式,如:gradle

以上是自动化部署java程序jenkins需要的基本环境,请自己提前安装好,下面着重讲解Jenkins的安装部署配置。

1.1 安装 JDK

Jenkins是Java应用程序,需要安装Java 8或更高版本。JDK 的安装可以参考 Linux下JAVA WEB服务器的搭建一(JDK\MYSQL\TOMCAT)。下面我们只列出简单的步骤,用 apt-get 的方式。

1) 查看系统是否安装过JDK

java -version

若返回如下信息,表明已经安装。

root@xnzysq20210118001:~# java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
root@xnzysq20210118001:~# 

2) 安装JDK

//更新软件源
sudo apt-get update

# 安装java8
sudo apt-get install openjdk-8-jdk
#sudo apt-get install openjdk-7-jdk  早些系统可以安装

#安装器会提示你同意 oracle 的服务条款,选择 ok,然后选择yes 即可

1.2 安装 Git

1) git的安装

首先,确认你的系统是否已安装git,可以通过 git --version 查看git版本号,如果没有,在命令行模式下输入sudo apt-get install git命令进行安装。通过 which git 命令可以查看git的安装路径。

root@xnzysq20210118001:/usr/local# git --version
git version 2.25.1
root@xnzysq20210118001:/usr/local# which git
/usr/bin/git

2) git的配置(该步骤可省略)

安装后您可能想要做的第一件事是在Git中配置自己的名称和电子邮件地址,以便您提交的更改包含正确的信息。 您可以通过使用以下命令来完成此操作:

git config --global user.name "kongzi"
git config --global user.email "kongzi@126.com"

接下来,我们可以通过 git config --list 来验证配置更改:

root@xnzysq20210118001:/usr/local# git config --list
user.name=kongzi
user.email=kongzi@126.com

1.3 安装 Maven

jenkins所在服务器安装maven,官方下载地址:https://maven.apache.org/download.cgi。

1) 下载并解压安装包

下载并解压安装包,配置maven的环境变量,配置完毕后记得执行一下: source /etc/profile命令使配置生效,然后再使用 mvn -v 检查是否配置成功.

# 在下载页面复制需要下载的maven安装包的下载地址,如下

https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz

# 下载maven的linux版安装包,
cd /usr/local/maven
wget https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz

# 解压安装包
tar -zxvf apache-maven-3.8.5-bin.tar.gz

# 配置环境变量,将 maven 的相关路径配置到/etc/profile文件中
export M2_HOME=/usr/local/maven/apache-maven-3.8.5
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin

# 重新加载一下,使环境变量配置生效
source /etc/profile
# 查看maven版本,验证配置是否生效
mvn -v

1_20220427144321

2) 配置maven仓库

配置maven仓库,设置阿里镜像仓库,一定要配置一下,国内的下载jar快些。

# 首先进入apache-maven-3.8.5目录,创建仓库存储目录 repository
cd apache-maven-3.8.5     #进入apache-maven-3.6.3目录
mkdir repository   		  #创建repository目录

# 进入cd conf目录,编辑 settings.xml文件,找到·localRepository下面复制一行加上<localRepository>/usr/local/maven/apache-maven-3.8.5/repository</localRepository>,再找到 mirror 加上阿里的仓库配置,配置完成后退出:
cd conf
vim settings.xml

1_20220427142555

1_20220427143750

附阿里云仓库配置:

     <!--配置阿里云maven私有仓库(即配阿里私服)-->
     <mirror>
     	<id>alimaven</id>
     	<mirrorOf>central</mirrorOf>
     	<url>https://maven.aliyun.com/repository/central</url>
     </mirror>
     <!-- 又一个镜像 -->
     <mirror> 
     	<id>alimaven</id> 
     	<name>aliyun maven</name> 
     	<url>http://central.maven.org/maven2</url> 
     	<mirrorOf>central</mirrorOf> 
     </mirror>
     <!-- 阿里云镜像 -->
     <mirror> 
     	<id>alimaven</id> 
     	<name>aliyun maven</name> 
     	<url>http://maven.aliyun.com/nexus/content/repositories/central/</url> 
     	<mirrorOf>central</mirrorOf> 
     </mirror>

1.4 安装tomcat服务器

如果你已经有了tomcat环境,或者你不想通过tomcat服务器部署Jenkins,跳过这一步。

tomcat 的安装可以参考 Linux下JAVA WEB服务器的搭建一(JDK\MYSQL\TOMCAT)

# 下载tomcat
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.53/bin/apache-tomcat-9.0.53.tar.gz

# 解压部署
tar xf apache-tomcat-9.0.53.tar.gz -C /usr/local/

# 创建软连接
ln -s apache-tomcat-9.0.53/ tomcat

# 启动tomcat
/usr/local/tomcat/bin/catalina.sh start

2、安装 Jenkins

Jenkins 可以作为独立应用程序安装,作为Java Servlet容器(如Apache Tomcat)中的服务,也可以作为 Docker 容器运行,建议通过自建脚本部署Jenkins,要是你想这样做,可以直接从 2.3 自建脚本部署Jenkins 看起。

2.1 安装Ubuntu软件包中的Jenkins

使用Jenkins的官方提供的软件仓库,要使用官方的软件仓库之前必须将软件仓库的秘钥添加到本地

# 添加官方软件仓库的秘钥到本地的apt秘钥中
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
# wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -

# 添加密钥后,系统将返回OK。接下来,将官方提供的软件仓库地址加入到本地的apt软件源中,本地用于存放软件源的文件在/etc/apt/sources.list
$ deb https://pkg.jenkins.io/debian-stable binary/
# echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list

# 更新本地的软件源缓存,以便apt-get使用新的存储库(一次不成功,就多执行几次)
$ sudo apt-get -y update

# 安装jenkins
sudo apt-get install jenkins

# 启动jenkis
sudo /etc/init.d/jenkins [start|restart|stop]

# 也可以使用systemctl启动Jenkins:
# sudo systemctl start jenkins
# 由于systemctl不显示输出,可以使用status命令来验证它是否成功启动:
# sudo systemctl status jenkins

由于包含在默认 Ubuntu 软件包中的 Jenkins 版本往往落后于项目本身的最新版本。为了利用最新的修复和功能,我们最好从官网维护的软件包中挑选适合自己的版本来安装Jenkins。

2.2 下载Jenkins war包安装

2.2.1 下载Jenkins

创建部署目录

cd /opt
mkdir jenkins

下载Jenkins war包

网页下载地址:https://jenkins.io/download/ ,如下图:

1_20220427102951

也可以在网页上找到需要的版本,右键复制下载地址,通过 wget 下载。

cd jenkins
# 镜像下载地址 - 最新版本
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/latest/jenkins.war
# 官网下载地址 - 最新稳定版本
wget https://get.jenkins.io/war-stable/latest/jenkins.war
# 官网下载地址 - 2.332.2稳定版本
wget https://get.jenkins.io/war-stable/2.332.2/jenkins.war

2.2.2 jenkins部署到tomcat服务器

将tomcat的配置web配置文件删除,下载好的jenkins.war放进tomcat/webapps目录下,启动tomcat即可。

[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# ls
docs  examples  host-manager  manager  ROOT
[root@localhost webapps]# rm -rf docs/ examples/ host-manager/ manager/
[root@localhost webapps]# ls
ROOT
[root@localhost webapps]# rm -rf ROOT/*
[root@localhost webapps]# 

启动tomcat服务

[root@localhost webapps]# mv /opt/jenkins/jenkins.war .
[root@localhost webapps]# ls
jenkins  jenkins.war  ROOT
[root@localhost webapps]# /usr/local/tomcat/bin/catalina.sh  start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@localhost webapps]# ss -antl
State       Recv-Q      Send-Q                Local Address:Port             Peer Address:Port      
LISTEN      0           128                         0.0.0.0:22                    0.0.0.0:*         
LISTEN      0           100                               *:8080                        *:*         
LISTEN      0           128                            [::]:22                       [::]:*         
LISTEN      0           1                [::ffff:127.0.0.1]:8005                        *:*         

2.2.3 自建脚本部署Jenkins

1)创建启动脚本

cd /opt

# 日志存放目录
mkdir logs

# 创建启动脚本
vim run_jenkins.sh

启动脚本内容如下:

#!/bin/bash
export JENKINS_HOME=/opt/jenkins
cd $JENKINS_HOME
nohup java -Dhudson.model.DownloadService.noSignatureCheck=true -Xmx2g -jar jenkins.war --httpPort=8081 > logs/jenkins.log 2>&1 &
tail -f logs/jenkins.log

2)创建配置文件

创建配置文件 hudson.model.UpdateCenter.xml,该文件为jenkins下载插件的源地址,该地址jenkins默认为: https://updates.jenkins.io/update-center.json

  • 有时候因为https的问题无法连接,可以将其改为http即可,即 http://updates.jenkins.io/update-center.json, 之后重启jenkins服务即可。
vim hudson.model.UpdateCenter.xml

内容如下:

<?xml version='1.1' encoding='UTF-8'?>
<sites>
    <site>
    <id>default</id>
    <url>http://updates.jenkins-ci.org/update-center.json</url>
</site> 

如果启动时卡住不动了或启动后出现如下错误:

hudson.model.UpdateCenter#updateDefaultSite: Upgrading Jenkins. Failed to update the default Update Site 'default'. Plugin upgrades may fail.
java.net.SocketTimeoutException: connect timed out
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)

将上述配置文件中的url内容 https://updates.jenkins-zh.cn/update-center.json 改为以下地址中的任意一个。

# 其他国内备用地址:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
http://mirror.xmission.com/jenkins/updates/update-center.json
http://mirror.esuni.jp/jenkins/updates/update-center.json

3)运行jenkins

通过 sh run_jenkins.sh 命令运行jenkins。

sudo chmod 777 run_jenkins.sh
sh run_jenkins.sh

2.2.4 docker部署jenkins

下载:docker pull jenkins/jenkins:lts-centos7
创建docker的文件映射卷: docker volume create jenkins
创建实例: docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins:/var/jenkins_home jenkins/jenkins:lts-centos7
获得初始管理密码: docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword

修改时区

删除已有实例:docker rm -f jenkins
重新创建实例并设置时区:docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins:/var/jenkins_home -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai jenkins/jenkins:lts-centos7

2.3 Jenkins 的解锁密码

系统正常启动后,会给出解锁 Jenkins 的密码,这里为cb3bf9a59ded4053b636fd005b1fb200,该密码在首次访问Jenkins时需要输入,如下图所示。

1_20220427121359

或者在Jenkins安装目录下的secrets目录下有个 initialAdminPassword 文件(/opt/jenkins/secrets/initialAdminPassword),里面存放的就是这个解锁密码。

1_20220427122426

3、Jenkins初始配置

3.1 解锁Jenkins

打开浏览器输入jenkins的服务器地址,如:http://172.19.82.206:8081/ ,首次访问 Jenkins 页面如下:

  • 默认情况下,Jenkins在端口8080上运行,这里我们用的是8081端口,因此我们将使用ufw打开该端口:sudo ufw allow 8081
  • 检查UFW的状态可以看到新的规则:sudo ufw status
  • 查看端口情况:sudo netstat -plntu

1_20220427123103

可以看到页面提示需要输入解锁 Jenkins 的管理员密码,在上一步中我们获取到的密码直接输入即可,如果没有获取到,根据页面上的提示,cat /opt/jenkins/secrets/initialAdminPassword 就可以看到这个密码。

输入密码点击 继续 按钮解锁,等待一段时间后,页面跳转到插件安装页面,如下图:

  • 如果

1_20220427123500

3.2 安装推荐的插件

选择安装推荐的插件,需要等待一段时间:

1_20220427124340

如果提示 部分插件安装失败,请重试或继续,可以多点击几次重试看能否安装成功(可能是因为下载慢的问题导致失败,多重试几次的话一般都会安装好的)。如果还是有部分插件安装失败了,我们也可以点击 继续 按钮开始下一步(后续再单独安装失败的插件)。

推荐需要安装的插件

  • Multiple SCMs:多版本管理
  • Rebuilder:重新构建
  • Safe Restart:安全重启
  • Pipeline:流水线
  • Text Finder:文件信息查找
  • Blue Ocean:美化jenkins界面
  • Allure

插件安装错误信息

部分插件由于缺少依赖无法加载。要恢复这些插件提供的功能,需要修复这些问题并重启 Jenkins。

Dependency errors:

Credentials Plugin (1126.ve05618c41e62)
Jenkins (2.340) or higher required
由于一个或者多个上面的错误导致这些插件无法加载。修复后插件将会再次加载。

Indirectly dependent plugins:

Credentials Binding Plugin (523.vd859a_4b_122e6)
Failed to load: Credentials Plugin (credentials 1126.ve05618c41e62)
Pipeline: Declarative Extension Points API (2.2077.vc78ec45162f1)
Failed to load: Credentials Binding Plugin (credentials-binding 523.vd859a_4b_122e6)

上述错误表示 Credentials Plugin 插件需要 Jenkins 的版本为 2.340及以上,在Jenkins的home目录下,执行 cat config.xml 查看Jenkins的版本号为2.332.2,所以需要升级 Jenkins。

1_20220427155300

官网清华大学开源软件镜像站 下载高版本的war包,重新部署。

3.3 创建管理员账户

插件安装完成后,系统将提示您设置第一个管理用户。填写所有必需的信息,然后单击 保存并完成

1_20220427125601

3.4 实例设置

该配置页将要求您为 Jenkins 实例设置 URL。该字段将填充自动生成的 URL。

1_20220427125811

什么都不要改,单击 保存并完成。进入下一个页面,提示Jenkins已就绪! ,单击 开始使用Jenkins 按钮开启Jenkins之旅。

1_20220427125828

至此,Jenkins的安装设置过程全部完成。

1_20220427130403

如果在安装插件时有很多安装失败的,建议此时重启一下Jenkins。

4、Jenkins系统管理配置

在Jenkins首页,点击左侧 Manage Jenkiins,进入Jenkins基本系统设置,如下图:

1_20220427131718

4.1 插件配置

首先我们会看到Jenkins初始化配置时,部分插件安装失败的原因,可以根据提示进行纠正,点 纠正 按钮可以进入插件管理页面。你可以在可用插件列表中安装你所需要的插件,在已安装列表中看到你已经安装的所有插件。

1_20220427132729

检查如下这两个插件是否已安装

  • 插件1:Publish over SSH
  • 插件2:Deploy to container Plugin

858186-20190804175420546-1753242342

往下拉动网页,我们可以看到很多配置功能,如系统配置、全局工具配置、插件管理等。插件管理进入的页面如上图。

1_20220427133511

4.2 系统配置

进入系统配置界面。增加系统管理员邮件地址:

1_20220427134044

添加编码全局属性:

找到全局属性,选中环境变量前的复选框,新增1个键值对,键为 LANG,值为 zh_CN.UTF-8

1_20220427134312

其他的属性可用默认配置,点击页面下方的 保存 按钮退出。

4.3 添加全局工具配置

4.3.1 配置JDK,不采用自动安装

因为jdk是安装Jenkins的必要提交,服务器已安装了,所以直接使用这个配置就可以。jdk的home路径:/usr/java/jdk1.8.0_291。jdk路径可以在
Manage Jenkiins - System Information 中看到。

  • 可以通过 echo $JAVA_HOME 得到jdk的home路径

1_20220427135715

配置jdk,不要勾选自动安装前面的复选框。

1_20220427140046

4.3.2 配置git,不采用自动安装

如过Global Tool Configuration全局工具配置下没有git配置,这时候需要取插件配置页下载插件 Git plugin, 安装后就会显示出git了。

配置git,不要勾选自动安装前面的复选框。git的home路径 /usr/bin/git

4.3.3 配置maven,不采用自动安装

配置maven,不要勾选自动安装前面的复选框。maven的home路径 /usr/local/maven/apache-maven-3.8.5

1_20220427144940

4.4 全局安全配置

4.4.1 配置用户相关的权限

  1. Jenkins 初始化过程中会先注册一个管理员用户
  2. 管理员用户再创建后续的一般用户
  3. 管理员用户登录进行后续配置
  4. 启用用户安全配置,Manage Jenkins -> Configure Global Security

858186-20190804172950700-2114870814

注册用户的操作的权限控制

  1. 必须由管理员来完成
  2. 用户可以自由注册,启用之后在Jenkins首页可以看到Sign-up入口
  3. 注册权限配置位置在“Configure Global Security”,团队规模不大(10人左右)建议不要启用用户自由注册选项,减少用户管理时间成本。

配置好权限之后,管理员可以从后台直接添加用户,从Jenkins管理控制台页面 -> Manage Jenkins -> Manage Users -> 新建用户。同时可以设置用户权限。

4.4.2 配置钩子程序访问权限

配置钩子程序(当用代码更新时通知)访问权限,避免报403错误。默认是勾选上了的,这里去掉勾选。

858186-20190804173204424-1668932536

以上即为需要设置的系统配置,配置完成后点 保存 按钮完成配置。

5、插件下载慢的解决办法


看到好多加速Jenkins安装插件速度的文章,大多数教程中都是在插件配置里使用从 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 替换原来的官方的json,我们来看看清华源拉下来的是什么,这里使用官方的下载插件的url全局搜索:

1_20220427164123

这里我们发现,每个插件下载路径依旧没有改变,变的只是这个json是从清华源下来的,其内写死的插件下载地址是没有变的,还是从官网下载!所以无论是更换还是没更换镜像json,下载插件的速度其实是没有变的!下面我们使用正确的方式来加速插件下载。

实际加速配置的json在Jenkins的工作目录中,

$ cd {你的Jenkins工作目录}/updates  #进入更新配置位置

5.1 第一种方式:使用vim

$ vim default.json   #这个Json文件与上边的配置文件是相同的

使用vim的命令,如下,替换所有插件下载的url

:1,$s/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g

替换连接测试url

:1,$s/http:\/\/www.google.com/https:\/\/www.baidu.com/g

进入vim先输入然后再粘贴上边的后边的命令,注意不要写两个冒号!

修改完成保存退出:wq!

5.2 第二种方式:使用sed

$ sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

这是直接修改的配置文件,如果前边Jenkins用sudo启动的话,那么这里的两个sed前均需要加上sudo

重启Jenkins,安装插件试试,简直超速!!

5.3 自己下载插件安装

如果按照上述步骤操作都有问题的话,那么你就只能自己下载插件自己导入安装了!!而且安装完以后还是会报错,说什么缺少依赖了!比如报如下所示的错误或者警告:

部分插件由于缺少依赖无法加载。要恢复这些插件提供的功能,需要修复这些问题并重启 Jenkins。

报错解决过程
GitHub API Plugin v1.86 
jackson2-api v2.7.3 is missing. To fix, install v2.7.3 or later.
Pipeline: REST API Plugin v2.9 
jackson2-api v2.7.3 is missing. To fix, install v2.7.3 or later.
GitHub plugin v1.28.0 
GitHub API Plugin v1.86 failed to load. Fix this plugin first.
Pipeline v2.5 
Pipeline: Stage View Plugin v2.9 failed to load. Fix this plugin first.
Pipeline: Stage View Plugin v2.9 
Pipeline: REST API Plugin v2.9 failed to load. Fix this plugin first.
GitHub Branch Source Plugin v2.2.3 
GitHub plugin v1.28.0 failed to load. Fix this plugin first.

根据上面的提示我们需要安装以下两个依赖:

  • jackson-api v2.7.3
  • GitHub API Plugin v1.86
  1. 进入jenkins插件下载地址

  2. ctrl+f 弹出搜索框中输入 jackson ,可以看到如下界面,点击进去,选择2.73版本下载下来到本地。(github api plugin类似)

1_20220427165350

  1. 进入Jenkins的插件管理界面–>高级–>选择文件–>上传,分别上传两个插件。

1_20220427165711

  1. 点击上传后,就会跳转到安装进度页面,安装完成后,提示需要重启。(可以把所有插件安装好后再重启)

1_20220427165818

  1. 重启

可以直接在后台使用命令 ps -ef|grep jenkinsps -ef|grep java查看进程号,然后使用 kill 端口结束进程。之后重新启动即可。再次进入系统管理界面,已经不提示错误了。

也可以通过 http://ip:port/restart 方式重启。

插件安装示例

例如我要使用gitlab的钩子功能,安装过程如下:

系统管理–>管理插件–>可选插件–>输入插件名–>勾选相应插件–>点击直接安装。

20170910174529779

安装完成后最好勾选重启,确保不会出问题

20170910174529779

0

评论区