jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
- Jenkins官方中文文档:https://www.jenkins.io/zh/doc/
- Jenkins官网:https://www.jenkins.io/doc
jenkins需要java环境,注意不同的jenkins版本对应的java版本要匹配,否则无法运行。
- https://www.jenkins.io/doc/book/platform-information/support-policy-java/
运行Jenkins需要以下Java版本:
不要下载低版本的了,很多插件不支持,最低建议JDK11
支持的Java版本 | 长期支持(LTS)版本 | Weekly release |
---|---|---|
Java 11, Java 17, or Java 21 | 2.426.1 (November 2023) | 2.419 (August 2023) |
Java 11 or Java 17 | 2.361.1 (September 2022) | 2.357 (June 2022) |
Java 8, Java 11, or Java 17 | 2.346.1 (June 2022) | 2.340 (March 2022) |
Java 8 or Java 11 | 2.164.1 (March 2019) | 2.164 (February 2019) |
安装
安装JDK
# 更新apt
$ sudo apt-get update
# 安装
# sudo apt-get install openjdk-8-jdk
$ sudo apt-get install openjdk-11-jdk
# 查看JAVA版本
$ java -version
which java
# 一般路径在 /usr/lib/jvm/java-11-openjdk-amd64
如果存在多个jdk版本可以按照下面方式切换。
sudo update-alternatives --config java sudo update-alternatives --config javac
安装Maven
sudo apt install maven
mvn -v
whereis maven
maven目录一般在/usr/share/maven
配置中央仓库
修改maven的setting指向阿里云
vim /usr/share/maven/conf/settings.xml
mirrors下添加mirror
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.***/repository/public</url>
<mirrorOf>*</mirrorOf>
</mirror>
安装Git
sudo apt-get install git
which git
whereis git
NodeJS安装(可选)
不安装vue等前端项目则不需要安装这个。
sudo apt-get install -y nodejs
npm config set registry https://registry.npm.taobao.org
whereis node
node -v
npm -v
安装Jenkins
安装Jenkins有多种方法,命令和下载war包方式等。
1.下载 Jenkins,注意跟JDK对应的版本才行。
JDK11,我下载的这个2.440.1版本
清华大学镜像下载更快:https://mirrors.tuna.tsinghua.edu.***/jenkins/war-stable/
# 用这个也很快,只需要改路径中的版本即可 wget https://mirrors.jenkins.io/war-stable/2.440.1/jenkins.war wget https://mirrors.tuna.tsinghua.edu.***/jenkins/war-stable/2.440.1/jenkins.war
2.打开终端进入到下载目录.
3.运行命令 java -jar jenkins.war --httpPort=8999
.
4.打开浏览器进入链接 http://localhost:8999
.
注意:如果有nginx反向代理jenkins需要按照下面处理。
希望请求https://www.example.***/jenkins到jenkins,则
--prefix=/jenkins
参数必须包含在 jenkins命令行参数中。即nginx配置为
location /jenkins { proxy_pass http://127.0.0.1:8999; }
启动命令为
java -jar jenkins.war --httpPort=8999 --prefix=/jenkins
浏览器访问地址为:
https://www.example.***/jenkins
5.复制初始密钥进行解锁Jenkins
cat /root/.jenkins/secrets/initialAdminPassword
# 获取到密钥直接填写到上面然后继续
6.选择安装推荐的插件,然后等待一会儿,插件安装错误不要管它。
一般都是网络或墙的问题导致插件下载安装失败,我们等会儿换个国内的插件源即可。
jenkins版本过低问题的话那就只能升级jenkins版本了。
- 可以在线升级Jenkins的版本(即下载war包)
- 如果是版本过低,打开系统管理即可看到,有提示让自动升级,选择即可
7.点击继续,创建管理员账户,然后一路点点点即可。
配置Jenkins
为Jenkins更换插件源
-
点击Jenkins主页面左侧列表中【系统管理】(Manage Jenkins)
-
点击纠正或者下拉找到【管理插件】(Manage Plugins)
-
选择【高级】(Advanced)选项卡
-
替换最下方【升级站点】中的URL
将
https://updates.jenkins.io/update-center.json
替换为
https://mirrors.tuna.tsinghua.edu.***/jenkins/updates/update-center.json
这个也行
https://mirror.esuni.jp/jenkins/updates/update-center.json
设置jenkins时区
到用户-设置-用户自定义时区-Asia/Shanghai
,路径为/user/laker/configure
安装插件
安装步骤:
- 打开Jenkins的首页,点击“Manage Jenkins”进入管理页面。
- 在左侧导航栏中选择“Manage Plugins”,然后点击“Available”选项卡。
- 在搜索框中输入“Maven Integration”,可以找到Maven插件,点击安装。
- 弹出一个确认框,点击“Install without restart”。
- 安装完成后,点击“Reload Configuration”重新加载Jenkins配置。
系统管理-插件管理-Available plugins
Maven Integration #新建任务发现没有maven的项目,需要去安装这个插件
Publish Over SSH #用于在构建过程中执行一系列远程操作,例如:从远程服务器获取代码、部署应用程序等。
Gitee #可以轻松地与Gitee代码托管平台集成,实现自动化的代码获取、构建和部署。
NodeJS #前端部署才需要
全局工具配置
系统管理-全局工具配置
- jdk:
/usr/lib/jvm/java-11-openjdk-amd64
- git:
/usr/bin/git
- maven:
/usr/share/maven
- nodejs:
/usr/include/node
添加Gitee凭证
要先安装Gitee插件
1. Gitee API 令牌
在系统管理-管理凭证中添加Gitee凭证,根据提示一步步操作即可,非常简单。
- 类型:Gitee API 令牌
用于拉取私有库代码。
2. 用户名密码凭证
- 类型:用户名和密码凭证
- 邮箱和密码
Gitee项目配置
在系统管理-系统配置-新增Gitee 配置
输入:
- 链接名:mall
- Gitee域名URL:https://gitee.***
- 证书令牌:选择上面添加的全局凭证
点击测试链接,会提示成功失败。
点击保存按钮。
如果出现保存出错,请去插件中心,升级所有插件。
部署后端
1.新建任务
2.配置源码管理
- Repo URL:https://xxxx.git。
- 凭证:可以用之前添加的用户名密码凭证,也可以直接点击添加按钮,添加一个凭证。
- 分支:制定能拉取哪些分支。
3.构建触发器
- 选择:Webhook触发构建 - 当仓库有推送代码等事件时触发自动构建。
4.到Gitee中添加WebHook
添加后,会出现测试按钮用于测试发送事件。
5.构建环境
勾选上对应的内容,将去做一些额外的处理,保持默认、
6.Pre Steps
在构建之前可以做的那些操作,在这个选项里面可以去添加一系列的脚本,保持默认。
7.配置编译
Root POM:这个pom,是相对于git的整体的目录的 pom.xml
Goals and options:clean package -Dmaven.test.skip=true
8.Post Steps
在项目构建完成之后,接下来需要做的内容
- 选择:Run only if build su***eeds
脚本内容为:
# 停止当前Spring Boot应用,然后再次部署
PID=$(ps -ef | grep laker.jar | grep -v grep | awk '{ print $2 }')
if [ ! -z "$PID" ]
then
kill $PID
fi
# 一定要带上BUILD_ID=xxx否则下面的nohup没启动成功就被杀掉了
BUILD_ID=dontKillMe
nohup java -jar /root/.jenkins/workspace/laker-springboot/laker-api/target/laker.jar >start.log 2>&1 &
点击保存按钮。
9.测试
在Gitee的上点击测试。
我发现这个测试并不能触发jenkins的构建,但是我提交了代码是可以触发的。
然后去jenkins上观察是否触发最新的构建以及构建日志。