1.0 前置环境
# 安装 git java maven
yum install -y git java maven
1.1 下载
打开 Jenkins 下载页面,选择想要的 Jenkins 版本。这里,我们选择 jenkins.war 软件包;
# 创建目录
mkdir -p /usr/local/jenkins
cd /usr/local/jenkins
# 官网下载
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
# 清华大学开源镜像站下载(国内速度快)
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/latest/jenkins.war
1.2 启动 Jenkins 服务
# 后台启动 Jenkins 服务
nohup java -jar jenkins.war &
# 可以通过在运行命令时指定--httpPort选项 来更改端口。
nohup java -jar jenkins.war --httpPort=9090 &
# 查看启动日志
tail -f nohup.out
因为 jenkins.war
内置 Jetty 服务器,所以无需丢到 Tomcat 等等容器下,可以直接进行启动。
2.1 Jenkins 配置
当您第一次访问新的 Jenkins 实例时,系统会要求您使用自动生成的密码解锁它。
-
浏览到
http://localhost:8080
(或您在安装 Jenkins 时为它配置的任何端口)并等待解锁 Jenkins页面出现。-
从 Jenkins 控制台日志输出中,复制自动生成的字母数字密码(在 2 组星号之间)。
命令:
sudo cat /var/jenkins_home/secrets/initialAdminPassword
将在控制台打印密码。2.2 Jenkins 停止&重启&重载
# 格式 http://[jenkins-server-address][:port]/[command] # 退出 http://[jenkins-server-address][:port]/exit # 重启 http://[jenkins-server-address][:port]/restart # 重载 http://[jenkins-server-address][:port]/reload
2.3 Jenkins 插件安装
推荐安装如下插件:
- Maven Integration
- Maven Info
- Publish Over SSH
- Extended Choice
- Parameter Git Parameter
从 Jenkins 首页开始,按照「系统管理 -> 插件管理」的顺序,进入「插件管理」界面。如下图所示:
搜索需要安装的插件后选中点击Install without restart(无需重启即刻安装);
2.4 Jenkins 配置JDK_MAVEN_GIT
从 Jenkins 首页开始,按照「系统管理 -> 全局工具配置」的顺序,进入「全局工具配置」界面。如下图所示:
2.4 SSH配置
从 Jenkins 首页开始,按照「系统管理 -> 系统配置」的顺序,进入「配置」界面,然后下拉到最底部找到SSH Servers,如下图所示:
配置远程服务器的 SSH 信息,并点击「高级」按钮 之后。如下图所示:
配置密钥等信息后,可点击「Test Configuration」按钮进行测试。如下图所示:
左下角显示「Success」代表成功。
3.0 Jenkins 部署任务配置
从 Jenkins 首页开始,点击「新建任务」按钮,进入 Jenkins 任务创建界面。输入任务名,并选择构建一个 Maven 项目。如下图所示:
输入任务名称选择「构建一个maven项目」后点击「确认」按钮,进入该任务的配置界面。如下图所示:
① General
② Maven Info Plugin Configuration
丢弃旧的构建,防止Jenkins 所在服务器的磁盘满。
参数化构建:这里使用 Git Parameter 插件,创建了参数名为
BRANCH
,值为 Git 项目的 Branch/Tag。在后续的项目构建中,可以选择构建的 Git 项目的分支/标签。③ 源码管理
1. 选择 Git 并配置仓库URL;
2. Branches to build 配置项:设置使用的 Git 分支/标签。使用之配置的构建参数
BRANCH
。3. Credentials: 可添加仓库密钥信息;
④ 构建触发器 & 构建环境 & Pre Steps
暂时无需配置,忽略即可;
⑤ Build
Goals and options 配置项:设置 Maven 构建命令。
- 若构建整个Maven项目子模块,使用
clean package -pl healthy/healthy-user -am -T 1C -Dmaven.test.skip=true -Dmaven.compile.fork=true
命令。 - 若构建整个项目,可使用
clean package -Dmaven.test.skip=true
命令。
⑥ Post Steps & 构建设置
⑦ 构建后设置
点击「增加构建后操作步骤」按钮,选择「Send build artifacts over SSH」选项,配置将 Maven 构建出来的
jar
包,通过 SSH 发送到远程服务器,并执行相应脚本,进行启动 Java 服务。如下图所示:Name 配置项:选择部署的远程服务器(之前配置的SSH)。
Transfer Set Sources files 配置项:设置传输的文件。
- maven多模块项目发布子模块时填
healthy-user/target/*.jar
。 - 使用
clean install -Dmaven.test.skip=true
命令时,则此处配置target/*.jar
即可。
Remove prefix 配置项:设置传输的文件,需要移除的前缀。
Remote directory 配置项:传输到远程服务器的目录。示例:/work/projects/jenkins-demo/build
Exec command 配置项:设置传输完文件后,执行的 Shell 命令。示例:cd /work/projects/jenkins-demo/shell && ./deploy.sh test 命令,表示执行部署脚本(test为shell传递的参数$1),进行启动 Java 服务。。
Exec in pty 配置项:必须勾选上,表示模拟一个终端执行脚本(高级选项中)。
Add Server 按钮:如果要部署到更多的远程服务器,部署多个节点,点击进行配置。
推荐打开Verbose output in console, 方便构建过程中查看日志;
4.0 Jenkins 部署任务
5.0 Jenkins Lark&飞书&钉钉通知
1. 从 Jenkins 首页开始,按照「系统管理 -> 插件管理」的顺序,进入「插件管理」界面,点击「高级」并找到 Deploy Plugin 选项后输入插件地址后点击 「deploy」
2. 安装成功后从 Jenkins 首页开始,按照「Manage Jenkins」进入「Jenkins管理」界面,找到「飞书」配置项,如下图所示:
机器人id: 可忽略自动生成; 名称: 自定义; webhook & 加密 : 来自飞书群机器人配置;高级配置可配置通知人,自定义内容,本文忽略;
3. 从 Jenkins 首页开始,按照「指定任务 -> 配置」的顺序,进入「配置」界面,如下图所示:
点击选中构建通知机器人即可;
6.0 示例项目&脚本
1. 示例项目:jenkins-demo (无需Nacos的话,可直接移除相关配置依赖)
7.0 常见问题
1. maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories
原因:maven3.8+ 以上的版本不再支持http连接。
解决(如下三种方案自行选择):
1. 降低 Maven 版本
2. 将镜像仓库地址协议由 http 改为 https (settings.xml)
3. 删除id为:maven-default-http-blocker的mirror节点配置 (settings.xml)
2. 无法访问插件镜像地址
# 查找文件 find / -name default.json # 进入目录 cd /root/.jenkins/updates # 修改下载地址为国内的源 sed -i 's/https:\/\/updates.jenkins.io\/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
3. 执行sh文件提示权限不够
# 终端执行如下命令 chmod +x ***.sh
4. 访问端口一直显示 Please wait while Jenkins is getting ready to work...
# 查找文件 find / -name hudson.model.UpdateCenter.xml # 修改源地址 vim /root/.jenkins/hudson.model.UpdateCenter.xml # 完整内容 仅需修改url即可 <?xml version='1.1' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>http://mirror.xmission.com/jenkins/updates/update-center.json</url> </site> </sites>
-