Linux 安装 Jenkins 自动化打包工具
一、Jenkins 简介
Jenkins 是一个开源的持续集成/持续交付(CI/CD)自动化服务器,它帮助开发团队自动执行软件开发过程中的各种任务,包括构建、测试以及部署。Jenkins 最初是从 Hudson 项目派生出来的,由 Sun Microsystems 开发,并在后来由社区维护和发展。Jenkins 可以运行在多种操作系统上,如 Windows、Linux 和 macOS。
主要特点
- 插件生态系统:Jenkins 拥有丰富的插件生态系统,支持与几乎所有开发工具和技术栈的集成,包括版本控制系统(如 Git)、构建工具(如 Maven、Gradle)、代码质量工具(如 SonarQube)、通知系统(如 Email、Slack)等。
- 高度可配置:用户可以通过图形界面或脚本配置 Jenkins,以满足特定项目的需要。
- 分布式构建:Jenkins 支持将工作分配给多台机器进行并行处理,从而加速构建过程。
- 易于使用:尽管功能强大,但 Jenkins 提供了友好的用户界面,使得配置和管理变得相对简单。
- 社区支持:作为一款开源软件,Jenkins 背后有一个活跃的社区,提供文档、教程和论坛支持。
应用场景
- 持续集成:每次代码提交后自动构建和测试,确保新代码不会破坏现有功能。
- 持续交付/持续部署:自动将通过测试的应用程序部署到生产环境或其他指定环境。
- 静态代码分析:自动执行代码质量检查。
- 性能测试:定期执行性能测试,监控应用表现。
- 自动化部署:简化跨多个环境的手动部署步骤。
使用案例
- 小团队:即使是很小的团队也能利用 Jenkins 来提高效率,通过自动化减少手动操作。
- 大型企业:大型组织可以使用 Jenkins 来管理复杂的多团队项目,确保不同组件之间的协调一致。
- 云原生应用:对于采用微服务架构的应用来说,Jenkins 可以帮助实现高效的CI/CD流程。
总之,Jenkins 是一个非常灵活且强大的工具,适合于各种规模的软件开发项目,帮助团队加快软件交付速度同时保证质量。
二、官网下载
前置环境
- jdk 11 Linux 下载 JDK教程
- maven 3.9.3 Linux 下载 Maven 教程
- git 2.41.0 Linux 下载 Git 教程
自动化打包可能需要用到
- jenkins 官网地址 -> 进入
Download
页面
- 选择
Stable (LTS)
->Past Releases
更多版本
- 选择下载
2.346.1
->jenkins.war
三、安装 Jenkins
3.1 环境配置
- 将
jenkins.war
上传到服务器
使用 Xftp 工具或者
rz
命令上传到服务器
- 创建 Jenkins 安装目录
# 创建 /usr/local/jenkins 目录
[root@linux-1 jenkins]# mkdir -p /usr/local/jenkins
# 将 jenkins.war 文件放到该目录下
[root@linux-1 jenkins]# ls
jenkins.war
- 创建 Jenkins 数据目录
[root@linux-1 jenkins]# mkdir -p /usr/local/jenkins/data
[root@linux-1 jenkins]# ls
data jenkins.war
- 创建日志目录
[root@linux-1 jenkins]# mkdir -p /usr/local/jenkins/logs
[root@linux-1 jenkins]# ls
data jenkins.war logs
- 配置环境变量,指定 Jenkins 的数据目录
这里需要配置环境变量,不然 jenkins 的数据目录会默认生成在
/root/.jenkins
目录下
# 修改 /etc/profile 配置文件,追加jenkins配置
[root@linux-1 jenkins]# vim /etc/profile
# jenkins
export JENKINS_HOME=/usr/local/jenkins/data
# 立即生效
[root@linux-1 jenkins]# source /etc/profile
- 后台启动 Jenkins
使用 java 命令启动 Jenkins ,指定启动端口和日志目录
[root@linux-1 jenkins]# nohup java -jar /usr/local/jenkins/jenkins.war --httpPort=18001 | /usr/sbin/cronolog /usr/local/jenkins/logs/jenkins_%Y-%m-%d.out >> /dev/null 2>&1 &
# nohup 以后台的方式启动
# httpPort 配置启动端口
# /usr/sbin/cronolog 指定jenkin的日志路径
Tip
/usr/sbin/cronolog 命令可能不存在
使用 yum install cronolog 下载即可
- 使用
kill
-9 命令关闭 Jenkins
[root@linux-1 jenkins]# ps -ef | grep jenkins
root 30834 30099 52 15:25 pts/1 00:04:49 java -jar /usr/local/jenkins/jenkins.war --httpPort=18001
root 30835 30099 0 15:25 pts/1 00:00:00 /usr/sbin/cronolog /usr/local/jenkins/logs/jenkins_%Y-%m-%d.out
root 31420 30099 0 15:34 pts/1 00:00:00 grep --color=auto jenkins
[root@linux-1 jenkins]# kill -9 30834
- 成功启动
启动成功,日志文件中包含了初始化密码的路径
/usr/local/jenkins/data/secrets/initialAdminPassword
2024-11-25 07:25:53.987+0000 [id=29] INFO jenkins.install.SetupWizard#init:
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
83193884403e484e80f5b9c2c293e5e0
This may also be found at: /usr/local/jenkins/data/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
3.2 Jenkins 启动和停止脚本
- 启动脚本
# 进入 /usr/local/jenkins/
[root@linux-1 jenkins]# cd /usr/local/jenkins/
# 创建 jenkins-start.sh 启动脚本
[root@linux-1 jenkins]# vim jenkins-start.sh
jenkins-start.sh
#! /bin/bash
echo -e "\n"
echo "==================== JENKINS START ========================"
echo -e "\n"
psid=`ps -aux | grep jenkins.war | grep -v "grep" | awk '{print $2}'`
print="start"
if [ -n "$psid" ]; then
kill -9 "$psid"
echo "jenkins server status ====> running"
print="restart"
else
echo "jenkins server status ====> stopped"
fi
sleep 2s
nohup java -jar /usr/local/jenkins/jenkins.war --httpPort=18001 | /usr/sbin/cronolog /usr/local/jenkins/logs/jenkins_%Y-%m-%d.out >> /dev/null 2>&1 &
echo "jenkins server ${print} success!"
echo -e "\n"
echo "==================== JENKINS START ========================"
echo -e "\n"
- 停止脚本
# 创建 jenkins-stop.sh 关闭脚本
[root@linux-1 jenkins]# vim jenkins-stop.sh
jenkins-stop.sh
#! /bin/bash
echo -e "\n-------------------- JENKINS STOP --------------------\n"
psid=`ps -aux | grep jenkins.war | grep -v "grep" | awk '{print $2}'`
if [ -n "$psid" ]; then
kill -9 "$psid"
echo "jenkins server status ====> running"
else
echo "jenkins server status ====> stopped"
fi
echo "jenkins stop success!!!"
echo -e "\n-------------------- JENKINS STOP --------------------\n"
- 添加脚本文件可执行权限
[root@linux-1 jenkins]# chmod ug+x jenkins-start.sh jenkins-stop.sh
[root@linux-1 jenkins]# ls
data jenkins-start.sh jenkins-stop.sh jenkins.war logs
3.3 异常问题
- 字体管理器的初始化失败
java.lang.NullPointerException
at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:379)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:324)
at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
解决方案
使用 yum 下载字体
[root@linux-1 jenkins]# yum install fontconfig
- java 版本太旧
Running with Java 8 from /usr/local/jdk1.8.0_202/jre, which is older than the minimum required version (Java 11).
Supported Java versions are: [11, 17, 21]
See https://jenkins.io/redirect/java-support/ for more information.
解决方案
下载更新版的JDK即可
四、初始化 Jenkins
- 浏览器访问, 输入初始化密码
通过 ip:httpPort 启动端口
- 选择安装推荐的插件
- 等待插件安装
- 安装完成,创建管理员账号
账号:fox
密码:fox123456
- 配置jenkins访问地址,便于一些插件使用
- 配置完成开始使用
- 随后就进入到Jenkins的管理界面了,不同版本的Jenkins界面可能会不一样