Jenkins Linux版如何进行版本控制
小樊
31
2025-12-14 05:23:20
Jenkins Linux版版本控制实操指南
一 核心概念与目标
- 在 Linux 上,Jenkins 的“版本控制”通常包含两部分:
- 对应用源码的版本管理:使用 Git 或 Subversion(SVN) 拉取与追踪代码变更。
- 对 Jenkins 自身的配置与流水线即代码(Pipeline-as-Code):将 Jenkinsfile 与 Job 配置纳入 Git 管理,实现可审计、可回滚与可迁移的 CI/CD 体系。
二 准备环境
- 安装 Java(Jenkins 需要 Java 8+),例如在 Debian/Ubuntu 上:
- sudo apt update && sudo apt install -y openjdk-11-jdk
- 安装 Git(用于拉取代码与托管 Jenkinsfile):
- 安装 Jenkins(Debian 系列示例):
- wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
- echo “deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/” | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
- sudo apt update && sudo apt install -y jenkins
- 首次访问 http://<主机>:8080,按页面提示完成解锁与初始化(创建管理员、安装推荐插件)。
三 将应用源码纳入版本控制
- 使用 Git
- 安装插件:进入 Manage Jenkins → Manage Plugins,安装 Git plugin(如有需要可加装 GitHub Integration、Blue Ocean 等)。
- 新建任务:选择 Pipeline,在 Pipeline 配置中勾选 Pipeline script from SCM,选择 Git,填写仓库 URL、凭据 与 分支(如 main)。
- 示例 Jenkinsfile(置于仓库根目录):
pipeline {
agent any
stages {
stage(‘Checkout’) {
steps { git url: ‘https://github.com/your-org/your-repo.git’, branch: ‘main’ }
}
stage(‘Build & Test’) {
steps { sh ‘./gradlew build’ }
}
}
}
- 保存并运行,Jenkins 会自动检出代码并执行构建流程。
- 使用 SVN
- 安装插件:在 Manage Plugins 安装 Subversion Plugin。
- 在任务配置的 源码管理 选择 Subversion,填写仓库 URL 与 凭据;在 构建触发器 可使用 Poll SCM 定时轮询(如 “H/2 * * * *” 表示每 2 分钟检查一次变更)。
四 将 Jenkins 配置与流水线纳入版本控制
- 推荐做法:把 Jenkinsfile 放在代码仓库中,配合 Multibranch Pipeline 或普通 Pipeline 项目,从 SCM 加载脚本,实现“流水线即代码”。
- 进阶做法:将 JENKINS_HOME(含 jobs/、config.xml 等)纳入 Git/SVN 管理,便于版本化与迁移。
- 关键步骤:
- 停止 Jenkins:sudo systemctl stop jenkins
- 备份并迁移目录:将现有 ~/.jenkins(或 /var/lib/jenkins)纳入版本控制;或设置新的 JENKINS_HOME 路径(通过环境变量、系统属性或 JNDI 方式)。
- 启动 Jenkins:sudo systemctl start jenkins
- 在 Web 界面执行 Manage Jenkins → Reload Configuration from Disk 重新加载配置。
- 注意:
- 避免把工作空间(workspace/)纳入版本控制(工作区是构建产物与检出目录,非配置)。
- 若使用 SVN 管理 JENKINS_HOME,需处理 .svn 目录与工作区 .svn 的干扰;常见做法是将 .jenkins 检出到独立目录,再按需复制配置,或使用脚本自动 add/delete/commit 同步变更。
五 版本化发布与回退实践
- 制品与版本文件
- 在构建步骤生成“版本文件”,例如写入 BUILD_NUMBER 或 Git 提交 ID:
- echo $BUILD_NUMBER > rev.$PROJECT_NAME
- 打包:tar zcvf ${PROJECT_NAME}.tar.gz *
- 通过 SSH 或制品仓库分发,并在目标环境按“版本目录 + 软链接”方式发布:
- 解压到版本目录:${PROJECT_RELEASE_HOME}/${PROJECT_NAME}.${REV}
- 切换软链接:ln -sfn ${PROJECT_RELEASE_HOME}/${PROJECT_NAME}.${REV} ${PROJECT_WEB_HOME}/${PROJECT_NAME}
- 快速回退
- 直接调整软链接指向历史版本目录即可完成回退:
- rm -f ${PROJECT_WEB_HOME}/${PROJECT_NAME}
- ln -s ${PROJECT_RELEASE_HOME}/${PROJECT_NAME}.${PREV_REV} ${PROJECT_WEB_HOME}/${PROJECT_NAME}
- 触发策略
- 在 GitHub/GitLab 侧配置 Webhook,实现 push/merge 即触发构建;或使用 Poll SCM 作为备选轮询机制。