前言
一开始总是犹豫着要不要写这篇博客,感觉很多教程都已经说明了怎么安装和部署项目了,再写是不是有点多余了,后面再仔细想想,他人的经验终究是他人的,自己走过的路要记录下来才行,免得后面又要重走一遍。
前期准备
Jenkins的作用我就不解释了,直接进入实践部分。首先我们需要搭建好环境。
安装好JDK
、Mavem
、Git
安装JDK和Maven
这里笔者的环境是JDK-1.8.0_41
和maven-3.8.4
如果安装成功配置好环境变量即可
vim /etc/profile
# jdk
export JAVA_HOME=/usr/local/jdk1.8.0_41 #你的jdk安装目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
# maven
export MAVEN_HOME=/usr/local/apache-maven-3.8.4 #你的maven安装目录
export PATH=$MAVEN_HOME/bin:$PATH
# 具体安装网址
# 安装JDK: https://blog.csdn.net/pdsu161530247/article/details/81582980
# 安装Maven: https://blog.csdn.net/qq_38270106/article/details/97764483
保存文件:wq!
退出,之后运行命令让其生效
source /etc/profile
通过java -version
和mvn -version
查看是否有效即可。入门教程,这个不多做解释。
安装Git
笔者的项目用的是Git,版本是git version 1.8.3.1
yum -y install git
# 之后输入 git --version查看git是否安装成功即可
需要注意的是,git拉取项目,如果没有定义账号和密码,每次拉取项目都要填写账号密码。所以我们可以配置git的账号和密码。
# 进入root目录,一般git安装都在这个位置
cd /root
git config --global credential.helper store
# 之后拉取项目再输入一次账号密码即可。如果是github,则需要输入私钥而不是密码,这个在github创建私钥的时候复制下来即可。
Jenkins安装
Jenkins安装笔者这里采用的是直接下载war包并且拉取到Linux服务器上。官方提供的在线安装我是没下载成功过。
war下载网址:https://get.jenkins.io/war-stable/
官方网址:https://www.jenkins.io/zh/doc/book/installing/
下载成功之后,直接java -jar jenkins.war
,默认端口是8080。如果启动期间报错,不能忽视!
注意:不能忽视报错的信息,不然后面下载插件会出现无法下载的情况
报错1
java.lang.NullPointerException
at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
贴了部分异常出来,明显是依赖少了。安装即可。
yum install fontconfig
报错2
#start: Calling the listener of the allowed exception ‘java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty’ at the attempt #1 to do the action check updates server
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Caused: java.lang.RuntimeException: Unexpected error
Caused: javax.net.ssl.SSLException
启动的时候,提示SSL错误。下载JDK11,然后将JDK11的cacerts文件,移动到JDK8下
具体目录:jdk-11/lib/security/cacerts 移动到 jdk8的java-jdk-8u41/jre/lib/security/
解决好启动报错的异常之后,再次启动是这样的,就是正常的Jenkins
Jenkins配置
进入Jenkins页面
如果一切都正常的情况,那么会默认安装插件,如果不正常,那么就是你启动异常,这个网上很多帖子都没说,大多都扯到Jenkins安装插件的网址需要*的缘故。实际上是你启动Jenkins就报错了,怎么能够指望它下载插件呢?
之后就是创建你的用户
保存并且完成之后进入Jenkins页面。安装插件,配置全局设置,环境变量
安装插件
具体的插件如果成功启动,默认大概都安装了。再之后就是SSH作为拉取服务器项目的。
Publish Over SSH
Git client plugin
全局设置
如果不用Jenkins内部的JDK安装,那么需要告知Jenkins,服务器安装JDK的路径在哪里。在全局属性这里定义
同时,Git项目拉取的服务器,账号密码也要定义,如果SSH remote hosts
没有显示,就需要到插件管理下载
全局工具配置
maven的配置,同理,不想用Jenkins插件提供的Maven,也要告知Jenkins位置
JDK配置
GIT配置
部署项目
部署项目需要考虑你具体要怎么设计?是全部用脚本配置,还是打jar包再发布?
这里笔者设计的是,由Jenkins维护项目代码。默认打master分支,之后Jenkins自动复制到具体的服务器上的某个文件。再执行对应的脚本。
需要设置这个丢弃旧的构建,不然一直构建,如果没有清除,会导致一种情况,磁盘空间不足。后面直接404了。
配置branch
具体的分支代码
配置部署的环境
git项目
maven编译部署项目
这里需要指定上面的选项参数,test环境
配置执行的脚本命令
接下来就是
这个了,这个就是你服务器上想要具体执行命令的脚本了。
Jenkins报错
接下来就是Jenkins一些报错的信息了。
报错1
如果不是使用jenkins提供的maven插件,而是自己安装的,执行mvn
命令的时候,会提示
mvn command not found
这里因为Jenkins是在/usr/bin
文件夹中找命令的,如果找不到,就会报错,这时候需要做个软链接
ln -s /opt/maven/bin/mvn /usr/bin/mvn
/opt/maven/bin/mvn 是笔者自己服务器上的maven路径。
报错2
The goal you specified requires a project to execute but there is no POM in this directory (/data). Please verify you invoked Maven from the correct directory
org.apache.maven.lifecycle.MissingProjectException: The goal you specified requires a project to execute but there is no POM in this directory (/data). Please verify you invoked Maven from the correct directory.
The JAVA_HOME environment variable is not defined correctly,
this environment variable is needed to run this program.
排查关于 usr/bin
底下有没有java这个命令,如果没有,或者有,试试设置
ln -s /usr/java/jdk/bin/java usr/bin/java
报错3
Exception when publishing, exception message [Exec exit status not zero. Status [127]]
这个是脚本路径不对或者脚本写错的问题,先自己执行下脚本,没问题再试试。有些shell命令,可能是要提示才能继续下一步的,所以可以考虑强制执行。