【持续集成、持续交付】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 配置正确。
  • 确保 JDKMaven 在 Jenkins 配置中的路径正确。

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

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

🎯 总结

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

  1. 安装 Jenkins 和 JDK;
  2. 配置 Maven 和 Git;
  3. 设置凭证管理,配置 Git 仓库;
  4. 配置 MySQL 数据库;
  5. 创建 Jenkins Pipeline 并进行自动化构建;
  6. 解决常见问题(如防火墙、Git 拉取失败、Maven 构建失败等)。
相关推荐
kaico20182 小时前
jenkins的slave节点管理
运维·jenkins
易知微EasyV数据可视化2 小时前
数字孪生+AI:青岛大学附属医院-立体监管院区运行,智能调度防范风险隐患
运维·人工智能·经验分享·数字孪生·空间智能
小码吃趴菜2 小时前
服务器预约系统linux小项目-第九节课
linux·运维·服务器
AI-小柒2 小时前
大模型API中转推荐:Dataeyes API 600+模型统一网关与负载均衡部署,claude编程、香蕉生图、视频大模型聚合平台
大数据·运维·开发语言·人工智能·算法·机器学习·负载均衡
lulu12165440782 小时前
大模型API中转平台weelinking技术深度解析:架构、性能与部署实践
运维·人工智能·架构·ai编程
Shepherdppz2 小时前
【避坑指南】超级笔记 Supernote 私有云部署完整指南:从零到一在群晖Synology NAS上搭建私人同步服务器
运维·服务器·笔记
智能运维指南2 小时前
嘉为蓝鲸 DevOps 平台与 AI 技术结合:推动数字化转型的行业标杆
运维·人工智能·devops
mingjie12122 小时前
mac virtualbox虚拟机 ubuntu-server openclaw 访问配置
linux·运维·ubuntu·openclaw
藤谷性能2 小时前
Ubuntu 22.04:在双硬盘电脑上安装Ubuntu 22.04单系统
linux·运维·ubuntu