1. 首页 > Linux教程 > 正文

Linux教程FG624-工具链扩展系列-CI/CD工具-Jenkins CI

本文档风哥主要介绍Jenkins CI,包括Jenkins CI的概念、特性、优势、架构设计、组件选择、部署、配置、集成等内容,参考Red Hat Enterprise Linux 10官方文档中的System administration章节,适合系统管理员和IT人员在生产环境中使用。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 Jenkins CI的概念

Jenkins CI是一个开源的持续集成和持续交付(CI/CD)工具,用于自动化构建、测试和部署软件项目。它支持多种版本控制系统和构建工具,能够帮助开发团队提高开发效率和代码质量。学习交流加群风哥微信: itpux-com

Jenkins CI的核心概念:

  • 持续集成(CI):频繁地将代码集成到共享仓库中,并自动构建和测试
  • 持续交付(CD):将构建好的代码自动部署到测试或生产环境
  • Pipeline:定义整个构建、测试和部署流程的流水线
  • 插件:通过插件扩展Jenkins的功能

1.2 Jenkins CI的特性

Jenkins CI的特性:

  • 开源:完全开源,可自由修改和扩展
  • 可扩展性:通过插件系统扩展功能
  • 分布式构建:支持分布式构建,提高构建效率
  • Pipeline:支持定义复杂的构建、测试和部署流程
  • 集成:与多种版本控制系统和构建工具集成
  • 可视化:提供直观的Web界面
  • 告警:支持构建失败时的告警

1.3 Jenkins CI的优势

Jenkins CI的优势:

  • 提高开发效率:自动化构建、测试和部署流程
  • 提高代码质量:通过自动化测试发现问题
  • 减少人为错误:自动化流程减少人为错误
  • 加速交付:快速构建和部署代码
  • 可扩展性:通过插件扩展功能
  • 开源:免费使用,社区活跃
风哥提示:Jenkins CI是一个功能强大的CI/CD工具,建议根据项目的需求和规模选择合适的部署方案,并充分利用其插件系统扩展功能。

Part02-生产环境规划与建议

2.1 Jenkins CI架构设计

Jenkins CI架构设计要点:

# 架构层次
– 主节点:Jenkins主服务器,负责管理构建任务和调度
– 代理节点:执行构建任务的节点,可以分布在不同的服务器上
– 插件系统:通过插件扩展Jenkins的功能
– 存储:存储构建历史、配置和插件

# 部署模式
– 单节点部署:所有Jenkins组件部署在同一服务器
– 分布式部署:主节点和代理节点分布在不同的服务器
– 容器化部署:在Docker容器中部署Jenkins

# 高可用性设计
– 主节点冗余:部署多个主节点,实现高可用性
– 代理节点扩展:根据需要扩展代理节点
– 数据备份:定期备份Jenkins数据
– 灾难恢复:制定灾难恢复计划

2.2 Jenkins CI组件选择

Jenkins CI组件选择要点:

# 核心组件
– Jenkins Core:Jenkins的核心功能
– Jenkins Pipeline:定义构建、测试和部署流程
– Jenkins Plugins:扩展Jenkins功能的插件

# 常用插件
– Git Plugin:与Git版本控制系统集成
– Maven Plugin:与Maven构建工具集成
– Docker Plugin:与Docker容器集成
– Pipeline Plugin:支持Pipeline功能
– Credentials Plugin:管理凭证
– Email Extension Plugin:发送邮件通知
– Slack Notification Plugin:发送Slack通知

# 构建工具
– Maven:Java项目构建工具
– Gradle:Java项目构建工具
– Ant:Java项目构建工具
– npm:Node.js项目构建工具
– pip:Python项目构建工具

# 版本控制系统
– Git:分布式版本控制系统
– Subversion:集中式版本控制系统
– Mercurial:分布式版本控制系统

2.3 Jenkins CI最佳实践

Jenkins CI最佳实践:

  • 合理规划架构:根据项目的规模和需求选择合适的部署模式
  • 使用Pipeline:使用Pipeline定义构建、测试和部署流程
  • 管理凭证:使用Credentials Plugin管理凭证,避免硬编码凭证
  • 定期备份:定期备份Jenkins数据,确保数据安全
  • 监控Jenkins:监控Jenkins的运行状态,确保其稳定运行
  • 使用插件:根据需要安装和配置插件,扩展Jenkins功能
生产环境建议:Jenkins CI的部署需要考虑系统的规模和复杂度,建议选择稳定的版本,并根据实际情况进行配置和优化。学习交流加群风哥QQ113257174

Part03-生产环境项目实施方案

3.1 Jenkins CI部署

3.1.1 部署Jenkins

# 1. 安装Java
dnf install -y java-11-openjdk-devel

# 2. 添加Jenkins存储库
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm –import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

# 3. 安装Jenkins
dnf install -y jenkins

# 4. 启动Jenkins
systemctl start jenkins
systemctl enable jenkins

# 5. 验证Jenkins
curl http://localhost:8080

# 6. 解锁Jenkins
# 浏览器访问 http://localhost:8080
# 输入初始密码,获取方式:cat /var/lib/jenkins/secrets/initialAdminPassword
# 安装推荐插件
# 创建管理员用户

3.1.2 部署Jenkins代理节点

# 1. 在代理节点上安装Java
dnf install -y java-11-openjdk-devel

# 2. 在Jenkins主节点上创建代理节点
# 管理Jenkins > 节点管理 > 新建节点
# 输入节点名称 > 选择“固定节点” > 确定
# 配置节点信息:
# – 远程工作目录:/var/lib/jenkins
# – 启动方式:通过SSH启动代理
# – 主机:代理节点IP地址
# – 凭据:添加SSH凭据
# 保存配置

# 3. 启动代理节点
# 在节点列表中选择代理节点 > 启动代理

3.2 Jenkins CI配置

3.2.1 配置Jenkins系统

# 1. 配置Jenkins系统
# 管理Jenkins > 系统配置
# 配置系统设置:
# – Jenkins URL:http://localhost:8080
# – 系统管理员邮件地址:admin@example.com
# 保存配置

# 2. 配置全局工具
# 管理Jenkins > 全局工具配置
# 配置JDK:
# – 名称:JDK 11
# – 安装自动:从AdoptOpenJDK安装
# 配置Maven:
# – 名称:Maven 3.8
# – 安装自动:从Apache安装
# 保存配置

# 3. 配置凭据
# 管理Jenkins > 凭据 > 系统 > 全局凭据 > 添加凭据
# 选择凭据类型:SSH用户名与私钥
# 输入用户名和私钥
# 保存配置

3.2.2 配置Jenkins Pipeline

# 1. 创建Pipeline项目
# 新建项目 > 输入项目名称 > 选择“Pipeline” > 确定

# 2. 配置Pipeline
# 定义:选择“Pipeline script”或“Pipeline script from SCM”
# 如果选择“Pipeline script”,输入Pipeline脚本
# 如果选择“Pipeline script from SCM”,配置SCM信息

# 3. 示例Pipeline脚本
pipeline {
agent any

stages {
stage(‘Checkout’) {
steps {
git ‘https://github.com/fgedu/example-project.git’
}
}

stage(‘Build’) {
steps {
sh ‘mvn clean package’
}
}

stage(‘Test’) {
steps {
sh ‘mvn test’
}
}

stage(‘Deploy’) {
steps {
sh ‘mvn deploy’
}
}
}

post {
success {
echo ‘构建成功’
}
failure {
echo ‘构建失败’
}
}
}

# 4. 保存配置
# 点击“保存”按钮

3.3 Jenkins CI集成

3.3.1 集成Git

# 1. 安装Git Plugin
# 管理Jenkins > 插件管理 > 可用插件 > 搜索“Git Plugin” > 安装

# 2. 配置Git凭据
# 管理Jenkins > 凭据 > 系统 > 全局凭据 > 添加凭据
# 选择凭据类型:Username with password 或 SSH Username with private key
# 输入Git仓库的凭据
# 保存配置

# 3. 在Pipeline中使用Git
pipeline {
agent any

stages {
stage(‘Checkout’) {
steps {
git credentialsId: ‘git-credentials’, url: ‘https://github.com/fgedu/example-project.git’
}
}

// 其他阶段
}
}

3.3.2 集成Docker

# 1. 安装Docker Plugin
# 管理Jenkins > 插件管理 > 可用插件 > 搜索“Docker Plugin” > 安装

# 2. 配置Docker
# 管理Jenkins > 系统配置 > 云 > 添加云 > Docker
# 配置Docker主机URL:unix:///var/run/docker.sock
# 保存配置

# 3. 在Pipeline中使用Docker
pipeline {
agent {
docker {
image ‘maven:3.8-openjdk-11’
args ‘-v /root/.m2:/root/.m2’
}
}

stages {
stage(‘Checkout’) {
steps {
git ‘https://github.com/fgedu/example-project.git’
}
}

stage(‘Build’) {
steps {
sh ‘mvn clean package’
}
}

// 其他阶段
}
}

风哥提示:Jenkins CI的集成需要考虑系统的复杂度和需求,建议根据实际情况选择合适的集成方案,并确保Jenkins的稳定性和可靠性。更多学习教程公众号风哥教程itpux_com

Part04-生产案例与实战讲解

4.1 Jenkins CI基础部署

某企业通过部署Jenkins CI,实现了对Java项目的自动化构建和测试。

# 1. 部署架构
# 前端:Jenkins Web界面
# 后端:Jenkins主节点
# 构建节点:Jenkins代理节点

# 2. 实施步骤
# 步骤1:安装Java
# 步骤2:安装Jenkins
# 步骤3:启动Jenkins
# 步骤4:解锁Jenkins
# 步骤5:安装推荐插件
# 步骤6:创建管理员用户
# 步骤7:配置Jenkins系统
# 步骤8:测试与验证

# 3. 应用效果
# 实现了对Java项目的自动化构建
# 实现了对Java项目的自动化测试
# 提高了开发效率
# 提高了代码质量

# 部署脚本
cat > jenkins-deployment.sh << 'EOF' #!/bin/bash # daily_check.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web: `http://www.fgedu.net.cn` # 安装Java dnf install -y java-11-openjdk-devel # 添加Jenkins存储库 wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key # 安装Jenkins dnf install -y jenkins # 启动Jenkins systemctl start jenkins systemctl enable jenkins # 验证Jenkins curl http://localhost:8080 # 输出初始密码 echo "初始密码:" cat /var/lib/jenkins/secrets/initialAdminPassword EOF # 运行部署脚本 bash jenkins-deployment.sh

4.2 Jenkins CI Pipeline配置

某企业通过配置Jenkins CI Pipeline,实现了对Java项目的自动化构建、测试和部署。

# 1. 部署架构
# 前端:Jenkins Web界面
# 后端:Jenkins主节点
# 构建节点:Jenkins代理节点
# 版本控制:Git

# 2. 实施步骤
# 步骤1:安装Git Plugin
# 步骤2:配置Git凭据
# 步骤3:创建Pipeline项目
# 步骤4:配置Pipeline脚本
# 步骤5:运行Pipeline
# 步骤6:测试与验证

# 3. 应用效果
# 实现了对Java项目的自动化构建
# 实现了对Java项目的自动化测试
# 实现了对Java项目的自动化部署
# 提高了开发效率
# 提高了代码质量

# Pipeline脚本
cat > Jenkinsfile << 'EOF' pipeline { agent any stages { stage('Checkout') { steps { git credentialsId: 'git-credentials', url: 'https://github.com/fgedu/example-project.git' } } stage('Build') { steps { sh 'mvn clean package' } } stage('Test') { steps { sh 'mvn test' } } stage('Deploy') { steps { sh 'mvn deploy' } } } post { success { echo '构建成功' } failure { echo '构建失败' } } } EOF

4.3 Jenkins CI与Git集成

某企业通过集成Jenkins CI与Git,实现了代码提交后的自动构建和测试。

# 1. 部署架构
# 前端:Jenkins Web界面
# 后端:Jenkins主节点
# 版本控制:Git
# 触发方式:Git Webhook

# 2. 实施步骤
# 步骤1:安装Git Plugin
# 步骤2:配置Git凭据
# 步骤3:创建Pipeline项目
# 步骤4:配置Git Webhook
# 步骤5:测试与验证

# 3. 应用效果
# 实现了代码提交后的自动构建
# 实现了代码提交后的自动测试
# 提高了开发效率
# 提高了代码质量

# 配置Git Webhook
# 在Git仓库中配置Webhook:
# 设置 > Webhooks > 添加Webhook
# Payload URL:http://jenkins-server:8080/github-webhook/
# 内容类型:application/json
# 触发事件:Push
# 保存配置

生产环境建议:Jenkins CI的部署需要考虑系统的规模和复杂度,建议根据实际情况选择合适的部署方案,并确保Jenkins的稳定性和可靠性。from Linux:www.itpux.com

Part05-风哥经验总结与分享

5.1 Jenkins CI使用经验

Jenkins CI使用经验:

  • 合理规划架构:根据项目的规模和需求选择合适的部署模式
  • 使用Pipeline:使用Pipeline定义构建、测试和部署流程
  • 管理凭证:使用Credentials Plugin管理凭证,避免硬编码凭证
  • 定期备份:定期备份Jenkins数据,确保数据安全
  • 监控Jenkins:监控Jenkins的运行状态,确保其稳定运行
  • 使用插件:根据需要安装和配置插件,扩展Jenkins功能
  • 优化构建:优化构建流程,提高构建效率

5.2 Jenkins CI故障排查

Jenkins CI故障排查:

  • 检查服务状态:使用systemctl status jenkins命令检查Jenkins服务的状态
  • 检查日志:查看Jenkins的日志,了解故障原因
  • 检查网络连接:确保Jenkins与版本控制系统和构建工具的网络连接正常
  • 检查插件:确保插件的版本与Jenkins版本兼容
  • 检查资源使用:确保Jenkins服务器的资源使用正常

5.3 Jenkins CI的未来发展

Jenkins CI的未来发展趋势:

  • 云原生:适应云原生环境的需求
  • 容器化:支持在容器中运行Jenkins
  • Kubernetes集成:与Kubernetes深度集成
  • AI集成:利用AI技术提高CI/CD的智能化水平
  • Pipeline增强:增强Pipeline的功能和灵活性
  • 安全性:加强Jenkins的安全性
风哥提示:Jenkins CI是一个功能强大的CI/CD工具,建议关注Jenkins的最新发展趋势,及时更新和优化Jenkins系统,提高开发效率和代码质量。

持续改进:Jenkins CI的使用是一个持续优化的过程,需要根据项目的变化和需求的变化不断调整和改进。建议建立Jenkins评估机制,定期评估Jenkins的使用效果,确保Jenkins能够满足项目的需求。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息