CI/CD 实战:Git + Jenkins 自动化部署
分类:CI/CD
标签: Git、Jenkins、CI/CD、流水线、Pipeline、持续集成、持续部署
摘要: 手动部署又慢又容易出错,CI/CD 就是”代码提交 → 自动构建 → 自动部署”的流水线。本文从版本管理 Git 讲起,到用 Jenkins 拉开”拉代码→构建→部署”三段流水线,并实测”改一行代码自动上新版本”的闭环。
一、Git 版本管理(先管住代码)
git init # 初始化仓库
git clone 仓库地址 # 克隆远程仓库
git status # 看改了哪些文件
git add . # 暂存所有改动
git commit -m "说明" # 提交
git push # 推到远程
git pull # 拉最新
git log --oneline # 看提交历史
git branch # 看分支
git checkout 分支名 # 切分支
git remote -v # 看远程地址
必踩的坑:dubious ownership
报错 fatal: detected dubious ownership in repository:仓库是别的用户建的(如 root),Git 安全机制拒绝访问。
解决:
git config --global --add safe.directory 仓库路径
二、安装 Jenkins
# 装 Java 依赖
sudo apt update && sudo apt install -y openjdk-11-jdk git
# 装 Jenkins(走官方源,会下载一会)
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
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
# 启动
sudo systemctl start jenkins && sudo systemctl enable jenkins && sudo systemctl status jenkins
初始化 4 步:
1. 拿初始管理员密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
2. 浏览器访问 http://<IP>:8080,粘贴密码
3. 选 Install suggested plugins 装插件
4. 创建管理员账号
三、最简流水线(Point 2 段式)
在 Jenkins 新建 Pipeline 任务,Script 输入框粘贴:
pipeline {
agent any
stages {
stage('构建') {
steps { echo '开始构建...' }
}
stage('部署') {
steps { sh 'echo deployed | sudo tee /var/www/html/index.html' }
}
}
}
点 立即构建,看蓝色方块 = 成功。访问后端 http://<IP>:8080 看到 deployed = 链路打通。
四、经典三段式流水线(拉代码→构建→部署)
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
sh 'rm -rf $WORKSPACE/cidep && git clone /var/jenkins_home/cidep $WORKSPACE/cidep && cd $WORKSPACE/cidep && git log --oneline'
}
}
stage('构建') {
steps {
sh 'cd $WORKSPACE/cidep && tar czf app.tar.gz index.html && ls -l app.tar.gz'
}
}
stage('部署') {
steps {
sh 'mkdir -p /tmp/deployed && cp $WORKSPACE/cidep/index.html /tmp/deployed/ && ls -l /tmp/deployed/index.html && cat /tmp/deployed/index.html'
}
}
}
}
闭环实测: 改代码提交新版本 → 点”立即构建” → 日志里能看到拉到新 commit、部署输出新版本号。
五、踩坑速记
| 坑 | 现象 | 解决 |
|---|---|---|
| Jenkins 页面一直转圈 | 初始化慢 | 正常,等日志出 Jenkins is fully up and running |
| Git 拒绝访问 | dubious ownership | git config --global --add safe.directory 路径 |
| 插件装失败 | Git 插件超时 | 不影响主流程,核心 Pipeline 优先 |
| 部署没更新 | 还是旧版本 | 确认 git clone 是否拿到新代码、部署路径对不对 |