【持续集成、持续交付】jenkins实现CI/CD

🚀 Jenkins 安装与配置教程

Jenkins 是一个广泛使用的自动化服务器,常用于 CI/CD 流水线。在这篇教程中,我们将从零开始,教你如何在服务器上安装和配置 Jenkins,并解决常见的问题。


1️⃣ 安装 Jenkins

🛠️ 安装 Jenkins

首先,确保系统已安装 JDK ,因为 Jenkins 需要依赖 Java。

步骤 1:安装 JDK

Jenkins 需要 Java 8+ 。你可以通过以下命令安装 OpenJDK 21:

复制代码
sudo dnf install -y java-21-openjdk

配置 JAVA_HOME 环境变量:

复制代码
sudo vi /etc/profile

添加:

复制代码
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$PATH:$JAVA_HOME/bin

使配置生效:

复制代码
source /etc/profile

确认安装:

复制代码
java -version

步骤 2:安装 Jenkins

使用 dnf 安装 Jenkins:

复制代码
sudo dnf install -y jenkins

2️⃣ 启动 Jenkins

步骤 3:启动 Jenkins 服务
复制代码
sudo systemctl start jenkins

设置 Jenkins 开机自启:

复制代码
sudo systemctl enable jenkins

步骤 4:访问 Jenkins

默认情况下,Jenkins 会监听 8080 端口,你可以在浏览器中访问:

复制代码
http://<your_server_ip>:8080

首次访问时,Jenkins 会要求你输入解锁密码。获取解锁密码:

复制代码
sudo cat /var/lib/jenkins/secrets/initialAdminPassword

3️⃣ 安装推荐插件

首次启动 Jenkins 时,它会提示你安装 推荐插件 。你可以选择"安装推荐插件"来安装常用插件,这样可以更方便地进行后续配置。


2️⃣ 配置 Jenkins 环境

🛠️ 配置全局工具(JDK、Maven、Git)

Jenkins 支持通过 全局工具配置 来管理 JDK、Maven 和 Git。进入 Jenkins 管理界面 → 系统管理 → 全局工具配置。

步骤 1:配置 JDK

在 JDK 部分配置:

  • JDK 名称 :例如 OpenJDK 8
  • Java 安装目录 : /usr/lib/jvm/java-1.8.0-openjdk
步骤 2:配置 Maven

在 Maven 部分配置:

  • Maven 名称 :例如 Maven 3
  • Maven 安装目录 : /usr/share/maven
步骤 3:配置 Git

在 Git 部分配置:

  • Git 可执行文件 :路径为 /usr/bin/git,如果你已经安装 Git,系统会自动找到它。

4️⃣ 配置 Git 仓库凭证

Jenkins 可以通过 凭证管理 来访问 Git 仓库。你可以在 Jenkins 中配置 用户名/密码 或 SSH 密钥。

步骤 1:配置凭证
  • 进入 Jenkins 管理界面 → 凭证 → 系统 → 全局凭证(默认)。
  • 点击 添加凭证 ,选择 Git 类型。
    • 如果是 HTTPS,填写用户名和密码。
    • 如果是 SSH,使用 SSH 密钥对(公钥放在 Git 服务器,私钥存放在 Jenkins 中)。

3️⃣ 创建 Jenkins 项目(Pipeline)

创建一个新的 Pipeline 项目,选择 流水线 类型。

📝 配置 Git 拉取代码

在 Pipeline 脚本中配置 Git 仓库 URL 和凭证 ID。假设我们已经在凭证管理中配置了名为 gitea-login 的凭证:

复制代码
复制代码
pipeline {
    agent any

    stages {
        stage('拉代码') {
            steps {
                git branch: 'master',
                    url: 'http://192.168.80.129:3000/wxz/signature.git',
                    credentialsId: 'gitea-login'
            }
        }

        stage('Maven构建') {
            steps {
                sh 'mvn clean package -DskipTests'
            }
        }

        stage('查看构建产物') {
            steps {
                sh 'ls -l target'
            }
        }

        stage('停止旧服务') {
            steps {
                sh '''
                PID=$(ps -ef | grep target | grep java | grep -v grep | awk '{print $2}')
                if [ -n "$PID" ]; then
                  echo "停止旧进程 $PID"
                  kill -9 $PID
                else
                  echo "没有运行中的服务"
                fi
                '''
            }
        }

       stage('启动新服务') {
    steps {
        sh '''
            cd /var/lib/jenkins/workspace/jenkins-demo
            
            # 杀死旧进程
            pkill -f "cloud-v3.0.1.618.jar" || true
            sleep 2
            
            # 🔥 核心:用 root 权限启动!解决所有权限/环境问题!
            export BUILD_ID=dontKillMe
            
            nohup sudo java -jar \
                -Dspring.main.allow-circular-references=true \
                -Xms512m -Xmx1024m \
                target/test-v3.0.1.999.jar \
                --server.port=8081 \
                >> nohup.out 2>&1 &
                
            sleep 8
            echo "✅ 服务已以 root 权限后台启动成功!"
        '''
    }
}

        stage('检查服务') {
            steps {
                sh '''
                ps -ef | grep java | grep -v grep
                '''
            }
        }
    }
}

4️⃣ 安装和配置 MySQL(默认不需要,但是gitea需要数据库)

如果你的项目需要使用数据库(例如 MySQL),你需要安装并配置 MySQL。

🛠️ 安装 MySQL

复制代码
sudo dnf install -y mysql-server

启动 MySQL 服务:

复制代码
sudo systemctl start mysqld
sudo systemctl enable mysqld

配置 MySQL 密码:

复制代码
sudo mysql_secure_installation

登录 MySQL 创建数据库:

复制代码
mysql -u root -p
CREATE DATABASE jenkins;

配置远程访问:

复制代码
GRANT ALL PRIVILEGES ON jenkins.* TO 'jenkins'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

5️⃣ 常见问题与解决方案

🔥 问题1:Jenkins 启动失败

解决方案:
  • 检查 Jenkins 日志:/var/log/jenkins/jenkins.log
  • 确保安装了正确的 JDK ,并且 JAVA_HOME 设置正确。
  • 确保没有端口冲突,Jenkins 默认使用 8080 端口。

🔥 问题2:无法访问 Jenkins(防火墙)

解决方案:

sudo firewall-cmd --add-port=8080/tcp --permanent

sudo firewall-cmd --reload


🔥 问题3:Git 拉取代码失败

解决方案:
  • 检查 Git URL 是否正确。
  • 确保 Jenkins 的 凭证管理 中配置了正确的 Git 凭证。
  • 如果使用 SSH ,确保 公钥 已添加到 Git 服务器。

🔥 问题4:Maven 构建失败

解决方案:
  • 确保系统已安装 Maven ,并且 MAVEN_HOME 配置正确。
  • 确保 JDK 和 Maven 在 Jenkins 配置中的路径正确。

🔥 问题5:MySQL 数据库连接失败

解决方案:
  • 确保 MySQL 服务已启动,并且防火墙没有阻止 3306 端口。
  • 确保数据库配置正确,包括数据库名称、用户名和密码。

🎯 总结

在这篇教程中,我们介绍了如何从零开始配置 Jenkins ,并结合 Maven 、MySQL 和 Git 创建一个完整的 CI/CD 流水线。步骤包括:

  1. 安装 Jenkins 和 JDK;
  2. 配置 Maven 和 Git;
  3. 设置凭证管理,配置 Git 仓库;
  4. 配置 MySQL 数据库;
  5. 创建 Jenkins Pipeline 并进行自动化构建;
  6. 解决常见问题(如防火墙、Git 拉取失败、Maven 构建失败等)。
相关推荐
不会就选b1 小时前
Linux之TCP理论<1>
linux·运维·服务器
倔强的石头1063 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
java·运维·开发语言
Android系统攻城狮4 小时前
Linux Gstreamer深度解析之gst_audio_encoder_get_frame_samples_min调用流程与实战(六十)
linux·运维·服务器·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶
_upupup4 小时前
Linux中的自动化构建——make/Makefile
linux·运维·自动化
还卿一钵无情泪5 小时前
Docker 部署Unsloth 绕开环境配置难题
运维·人工智能·docker·ai·容器·nlp·干货
打工仔折腾 AI6 小时前
Docker镜像分层与卷挂载到底怎么工作:一次文件系统层面的实测分析
运维·人工智能·后端·python·docker·容器·性能优化
大猫会长7 小时前
调用codebuddy集成的supabase授权白屏解决方法
linux·运维·服务器
夜之眷属7 小时前
服务器被挖矿病毒入侵的排查与清理实录
运维·服务器
极客先躯7 小时前
高级java每日一道面试题-2026年01月20日-实战篇[Docker]-如何实现镜像的跨区域复制?
java·运维·docker·容器·架构图
韩振方8 小时前
为什么服务显示占了 8G,实际内存却没那么多?
运维