Git+Jenkins 基本使用:从入门到实战(知识点大全)

一、前言:为什么要用 Jenkins?

在现代软件开发中,持续集成(CI)持续部署(CD) 已经成为标配。Jenkins 作为最流行的开源自动化服务器,能够帮助开发团队:

  • 自动拉取代码、编译、打包、测试、部署

  • 提前发现问题,降低修复成本

  • 减少重复性人工操作,提升效率

  • 实现构建、测试、发布的全流程自动化

一句话总结:Jenkins 让"提交代码即发布"成为可能。


二、Jenkins 是什么?

  • 前身:Hudson,2011 年更名为 Jenkins

  • 开发语言:Java

  • 核心功能:持续集成、持续交付、持续部署

  • 特点

    • 易安装、易配置

    • 支持 Git、SVN、GitHub、Gitee 等

    • 支持 Maven、Gradle、Ant 等构建工具

    • 丰富的插件生态

    • 支持分布式构建

    • 提供图形化界面和邮件/IM 通知


三、CI / CD 核心概念对比

概念 说明
持续集成(CI) 代码频繁合并到主干,自动构建 + 测试
持续交付(CD) 确保代码随时可发布到生产环境
持续部署(CD) 每次代码变更自动部署到生产环境

持续集成的核心是自动化,持续部署是持续交付的"更进一步"。


四、环境准备(基于 openEuler 24.03)

1. 资源清单

主机名 IP 配置 角色
jenkins 192.168.207.137 2C4G Jenkins 服务器
gitlab 192.168.207.138 2C4G GitLab 代码仓库

2. 基础环境配置(所有节点)

bash

复制代码
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭 SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 时间同步
timedatectl set-timezone Asia/Shanghai
chronyc sources -v

# 修改主机名(分别执行)
hostnamectl set-hostname jenkins   # 在 Jenkins 节点
hostnamectl set-hostname gitlab    # 在 GitLab 节点

五、GitLab 部署与项目创建(简要)

bash

复制代码
# 克隆项目代码
git clone http://192.168.207.138/root/demo.git
mv -f BlueLight/* demo/
cd demo
git add .
git commit -m "initial commit"
git branch -M main
git push -u origin main

补充:GitLab 部署可使用 Docker 或 RPM 方式,建议至少 4G 内存。


六、Jenkins 部署(基于 Tomcat)

1. 安装 JDK 11

bash

复制代码
tar zxf jdk-11.0.16.1_linux-x64_bin.tar.gz
mv jdk-11.0.16.1 /usr/local/java11/

cat >> /etc/profile << 'EOF'
export JAVA_HOME=/usr/local/java11/
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
EOF

source /etc/profile
java -version

2. 安装 Tomcat 9

bash

复制代码
tar zxvf apache-tomcat-8.5.56.tar.gz
mv apache-tomcat-8.5.56 /usr/local/tomcat

3. 部署 Jenkins WAR 包

bash

复制代码
dnf -y install fontconfig
mv jenkins2.401.1.war jenkins.war
mv jenkins.war /usr/local/tomcat/webapps/
/usr/local/tomcat/bin/startup.sh

访问:http://192.168.207.137:8080/jenkins


七、Jenkins 初始化与插件管理

1. 修改插件源(国内加速)

bash

复制代码
cd /root/.jenkins/updates
sed -i 's/https:\/\/www.jenkins.io/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
sed -i 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

注意:default.json 在 Jenkins 首次启动后生成。

2. 推荐安装的插件清单(重点)

插件名称 用途
Git Parameter 动态选择 Git 分支
Blue Ocean 现代化 UI 流水线
GitLab 与 GitLab 集成
Role-based Authorization Strategy 角色权限控制
Credentials Binding 凭据管理
Maven Integration Maven 构建支持
Publish Over SSH 远程部署
Localization: Chinese (Simplified) 中文界面

补充:插件安装失败可重试或手动上传 .hpi 文件。


八、角色与权限管理(RBAC)

1. 启用 Role-Based Strategy

路径:Manage Jenkins → Security → Authorization

2. 创建角色

角色名 类型 权限
baseRole 全局 Overall/Read
role1 项目 匹配 my-item01.*
role2 项目 匹配 my-item02.*

3. 创建用户并绑定角色

bash

复制代码
用户:zhangsan → baseRole + role1
用户:lisi     → baseRole + role2

补充:如果不绑定 Overall/Read,用户登录后会提示无权限。


九、凭据管理(Credentials)

1. 凭据类型

类型 说明
Username with password 用户名/密码
SSH Username with private key SSH 密钥对
Secret text API Token
Certificate 证书文件

2. 添加 GitLab 用户名密码凭据

  • 类型:Username with password

  • 范围:Global

  • 用户名:root

  • 密码:pwd12345

3. 添加 SSH 密钥对凭据

bash

复制代码
# 生成密钥对
ssh-keygen
cat ~/.ssh/id_rsa.pub   # 复制到 GitLab SSH Keys

Jenkins 中添加:

  • 类型:SSH Username with private key

  • 用户名:root

  • Private Key:粘贴 id_rsa 内容

补充:首次连接 GitLab 需要手动 ssh git@gitlab-ip 接受指纹。


十、项目构建与测试(权限验证)

1. 创建项目

  • my-item01-zhangsan

  • my-item02-lisi

2. 验证权限

  • zhangsan 只能看到并操作 my-item01-*

  • lisi 只能看到并操作 my-item02-*


十一、补充知识点(扩展阅读)

1. Jenkins Pipeline 语法概览

  • Declarative Pipeline:结构清晰,适合大多数场景

  • Scripted Pipeline:更灵活,适合复杂逻辑

groovy

复制代码
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building...'
            }
        }
    }
}

2. 常见错误及解决方案

错误 解决方案
插件安装失败 更换镜像源或手动上传插件
Git 拉取失败 检查凭据、SSH 指纹、网络连通性
权限不足 绑定 Overall/Read 角色
构建卡住 检查 Jenkins 内存、Tomcat 日志

3. 安全建议

  • 使用 HTTPS + 反向代理(Nginx)

  • 定期备份 /var/lib/jenkins

  • 限制用户注册权限

  • 使用 LDAP / OAuth 统一认证

4. Jenkins + GitLab Webhook 自动触发构建

  • 在 GitLab 项目中配置 Webhook URL:

    http://jenkins-ip:8080/project/your-project

  • Jenkins 中勾选 Build when a change is pushed to GitLab


相关推荐
liulilittle1 小时前
Linux Swap 文件配置与持久化(虚拟内存)
linux·运维·服务器
未若君雅裁1 小时前
日志采集与ELK:从本地日志到集中检索分析
运维·elk·jenkins
零陵上将军_xdr1 小时前
从沙子到CPU——计算机硬件基础入门
linux·运维·硬件架构
vortex51 小时前
Linux 命令工具箱:util-linux 与 GNU Coreutils
linux·运维·gnu
AIex-YH1 小时前
三域贯通11/12:生物制造的“死亡之谷“,CDMO 是桥还是船?
运维·制造·策略模式
荒--1 小时前
MSF 使用
linux·运维·服务器
明航咨询-程老师1 小时前
信创运维困局:“救火队”模式走到尽头,平台工程如何重塑CISAW安全体系?
运维·安全·数据安全官,ccrc 认证,数据合规,职业发展规划
w3296362712 小时前
八、OpenCode 高阶玩法:CLI 自动化、CI/CD 集成与远程协作
运维·ci/cd·自动化·ai编程·开发工具·opencode
烁3472 小时前
liunx命令不完整版
linux·运维·服务器
vsropy2 小时前
cmake版本不对不能直接删/无法source
linux·运维·服务器