文章目录
-
- 一、为啥要搞研发流程自动化?看完你就懂啦!
- [二、主角登场:Jenkins和GitLab CI到底是啥?](#二、主角登场:Jenkins和GitLab CI到底是啥?)
-
- [1. Jenkins:自动化流程的"万能引擎"](#1. Jenkins:自动化流程的"万能引擎")
- [2. GitLab CI:代码仓库自带的"自动化神器"](#2. GitLab CI:代码仓库自带的"自动化神器")
- 三、手把手教你集成:从安装到跑通流程(含Python示例)
-
- [1. 先把环境搭好:安装Jenkins和GitLab](#1. 先把环境搭好:安装Jenkins和GitLab)
- [2. 关键一步:让Jenkins和GitLab"打通电话"](#2. 关键一步:让Jenkins和GitLab"打通电话")
- [3. 编写自动化脚本:Python项目示例](#3. 编写自动化脚本:Python项目示例)
-
- [(1)GitLab CI配置:.gitlab-ci.yml文件](#(1)GitLab CI配置:.gitlab-ci.yml文件)
- (2)Jenkins配置:Jenkinsfile(Pipeline脚本)
- [4. 触发自动化:代码提交后会发生啥?](#4. 触发自动化:代码提交后会发生啥?)
- 四、2025年最新技巧:让自动化更智能、更省心
-
- [1. 用AI辅助排查问题](#1. 用AI辅助排查问题)
- [2. 缓存依赖,加速构建](#2. 缓存依赖,加速构建)
- [3. 多云环境适配](#3. 多云环境适配)
- [4. 低代码配置流水线](#4. 低代码配置流水线)
- 五、常见坑位预警:这些问题要注意!
- 六、最后总结:自动化让研发更高效
目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步。想要系统学习AI知识的朋友可以看看我的教程http://blog.csdn.net/jiangjunshow,教程通俗易懂,风趣幽默,从深度学习基础原理到各领域实战应用都有讲解。
一、为啥要搞研发流程自动化?看完你就懂啦!
还在手动敲命令构建代码?还在熬夜等测试结果?快别这么折腾啦!2025年的DevOps早就不是"手动操作"的时代咯~ 现在流行的是"代码一提交,流程全自动",而Jenkins和GitLab CI就是实现这个目标的"黄金搭档"呀!
简单说下哈,研发流程自动化能解决三大痛点:一是避免重复工作(比如每次提交都要手动构建、测试,累得慌);二是减少人为错误(手动操作难免输错命令,自动化可不会);三是加速交付速度(以前几天才能上线的功能,现在可能几小时就搞定)。尤其是2025年大家都在搞智能化协作,自动化可是基础中的基础呢!
二、主角登场:Jenkins和GitLab CI到底是啥?
先给新手小伙伴科普下,这俩工具可不是竞争对手,而是好搭档哦~
1. Jenkins:自动化流程的"万能引擎"
Jenkins这玩意儿太经典啦!开源免费不说,还支持Windows、Linux、macOS所有系统,插件生态更是强到没朋友(超过1800个插件),不管你是想自动构建、测试,还是部署到云服务器,它都能搞定。最牛的是它支持分布式架构,多台机器一起干活,再大的项目也不怕卡壳~
2. GitLab CI:代码仓库自带的"自动化神器"
GitLab CI是GitLab内置的CI/CD工具,不用额外装软件,只要在项目里加个.gitlab-ci.yml文件,就能定义自动化流程,简直不要太方便!它的核心是"流水线"(Pipeline),把构建、测试、部署分成不同阶段,一步步自动执行,还能直观看到每个步骤的结果。
三、手把手教你集成:从安装到跑通流程(含Python示例)
下面咱们来实操啦!以Ubuntu系统为例,一步步搞定Jenkins和GitLab CI的集成,全程带命令、带代码,新手也能跟着做~
1. 先把环境搭好:安装Jenkins和GitLab
(1)安装Jenkins(Linux系统)
打开终端,跟着敲命令就行,超简单:
bash
# 先装Java(Jenkins需要Java环境)
sudo apt update
sudo apt install openjdk-11-jdk -y
# 添加Jenkins仓库和密钥
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] http://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
# 安装Jenkins并启动
sudo apt update
sudo apt install jenkins -y
sudo systemctl start jenkins
sudo systemctl enable jenkins # 设置开机自启
安装完后,浏览器访问 http://你的服务器IP:8080,第一次登录需要初始密码,用这个命令获取:
bash
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
输入密码后,跟着向导装推荐插件,创建管理员用户,Jenkins就搞定啦!
(2)安装GitLab(Linux系统)
还是终端敲命令,步骤不多:
bash
# 安装依赖
sudo apt update
sudo apt install -y curl openssh-server ca-certificates postfix
# 添加GitLab仓库并安装
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
sudo EXTERNAL_URL="http://你的服务器IP" apt install gitlab-ee -y
# 配置并启动GitLab
sudo gitlab-ctl reconfigure
访问 http://你的服务器IP,第一次登录设置root密码,GitLab就可以用啦~
2. 关键一步:让Jenkins和GitLab"打通电话"
要让它们配合工作,得先配置连接,核心是"访问令牌",就像互相认亲的凭证~
(1)在GitLab生成访问令牌
- 登录GitLab,点击右上角头像 → Settings → Access Tokens
- 填写名称(比如"jenkins-token"),勾选权限:api、read_repository、write_repository
- 点击"Create personal access token",复制生成的token(一定要保存好,刷新页面就看不到啦)
(2)在Jenkins配置GitLab连接
- 登录Jenkins,点击"系统管理" → "系统配置"
- 拉到"GitLab"部分,点击"添加GitLab服务器"
- 填写名称(比如"GitLab-Server"),URL填你的GitLab地址(http://你的服务器IP)
- 点击"添加"凭证,选择"GitLab API token",粘贴刚才复制的token,保存
- 点击"测试连接",显示"Success"就说明打通啦!
3. 编写自动化脚本:Python项目示例
咱们以一个Python Web项目(比如Flask项目)为例,分别写GitLab CI和Jenkins的自动化脚本,实现"代码提交 → 自动测试 → 自动构建 → 自动部署"的全流程~
(1)GitLab CI配置:.gitlab-ci.yml文件
在你的Python项目根目录创建 .gitlab-ci.yml 文件,内容如下(注释写得明明白白):
yaml
# 定义流水线阶段:安装依赖 → 代码检查 → 运行测试 → 构建打包
stages:
- install
- lint
- test
- build
# 安装依赖(用Python 3.11镜像,速度快)
install-deps:
stage: install
image: python:3.11
script:
- pip install --upgrade pip
- pip install flask pytest flake8 # 安装项目依赖和测试工具
cache:
paths:
- venv/ # 缓存依赖,下次构建更快
only:
- main # 只在main分支触发
# 代码检查(用flake8检查语法错误)
code-lint:
stage: lint
image: python:3.11
script:
- flake8 app.py --max-line-length=120 # 检查app.py文件
needs:
- install-deps # 依赖install-deps阶段完成
only:
- main
# 运行测试(用pytest执行测试用例)
run-tests:
stage: test
image: python:3.11
script:
- pytest tests/ -v # 执行tests目录下的测试用例
artifacts:
paths:
- test-results/ # 保存测试结果,方便后续查看
expire_in: 1 week # 保存1周
needs:
- install-deps
only:
- main
# 构建打包(生成Python包)
build-package:
stage: build
image: python:3.11
script:
- python setup.py sdist bdist_wheel # 构建tar包和whl包
artifacts:
paths:
- dist/ # 保存构建产物
expire_in: 1 month # 保存1个月
needs:
- run-tests
only:
- main
把这个文件提交到GitLab仓库,GitLab CI就会自动识别,每次提交代码都会触发流水线啦!
(2)Jenkins配置:Jenkinsfile(Pipeline脚本)
如果需要更复杂的流程(比如部署到多云环境),可以用Jenkins的Pipeline,在项目根目录创建 Jenkinsfile,内容如下:
groovy
pipeline {
agent any # 任意可用的Jenkins节点
tools {
python 'Python 3.11' # Jenkins中配置的Python版本
}
stages {
stage('拉取代码') {
steps {
git url: 'http://你的GitLab地址/root/python-project.git', # GitLab仓库地址
credentialsId: 'gitlab-credentials', # Jenkins中配置的GitLab凭证
branch: 'main'
}
}
stage('安装依赖') {
steps {
sh 'pip install --upgrade pip'
sh 'pip install -r requirements.txt'
}
}
stage('自动化测试') {
steps {
sh 'pytest tests/ --junitxml=test-results.xml' # 生成测试报告
}
post {
always {
junit 'test-results.xml' # 在Jenkins中显示测试报告
}
}
}
stage('部署到服务器') {
steps {
// 这里用Python脚本实现部署(示例:复制文件到目标服务器)
sh '''python - <<EOF
import paramiko
import os
# 连接目标服务器
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('目标服务器IP', username='root', password='服务器密码')
# 上传构建产物
sftp = ssh.open_sftp()
sftp.put('dist/python-project-1.0.tar.gz', '/opt/app/')
sftp.close()
# 执行部署命令
stdin, stdout, stderr = ssh.exec_command('cd /opt/app && tar -zxf python-project-1.0.tar.gz && python3 app.py &')
print(stdout.read().decode())
ssh.close()
EOF'''
}
when {
branch 'main' # 只在main分支部署
}
}
}
post {
success {
echo '🎉 流水线执行成功!项目部署完成~'
}
failure {
echo '❌ 流水线执行失败!快去看看日志排查问题~'
}
}
}
然后在Jenkins中新建"流水线"任务,配置"从SCM获取Pipeline脚本",选择Git,填写GitLab仓库地址和凭证,指定Jenkinsfile路径,保存即可~
4. 触发自动化:代码提交后会发生啥?
一切配置好后,咱们来测试下流程:
- 在本地修改Python项目代码(比如改个接口返回值)
- 提交代码到GitLab的main分支:
git add . && git commit -m "测试自动化部署" && git push - 此时GitLab CI会自动触发流水线,在GitLab的"CI/CD → 流水线"中能看到实时进度
- 同时,Jenkins会通过Webhook(需要在GitLab配置,后面说)自动拉取代码,执行Jenkinsfile中的流程
- 等待几分钟,打开Jenkins控制台,能看到每个阶段的执行结果,成功的话就会显示"🎉 流水线执行成功!"
四、2025年最新技巧:让自动化更智能、更省心
现在的DevOps工具都在往智能化方向发展,分享几个2025年超实用的技巧,让你的自动化流程更高效~
1. 用AI辅助排查问题
Jenkins和GitLab CI现在都支持AI日志分析啦!如果构建失败,工具会自动分析日志,推荐解决方案。比如依赖冲突时,会提示"请升级requests到2.31.0版本",新手也能快速排错~
2. 缓存依赖,加速构建
像咱们在.gitlab-ci.yml中配置的cache,还有Jenkins的缓存插件,能把依赖包(比如node_modules、venv)保存起来,下次构建不用重新下载,速度能提升3-5倍,太香啦!
3. 多云环境适配
如果你的项目部署在阿里云、华为云等多个平台,Jenkins可以配置多云节点,自动选择最优资源构建。比如高峰期用公有云弹性扩容,平峰期用私有云降本,灵活又省钱~
4. 低代码配置流水线
不想写复杂的YAML或Groovy脚本?可以用Jenkins的可视化编排工具,拖拽组件就能生成流水线,比如"拉取代码"、"运行测试"、"部署"这些步骤,点点鼠标就搞定,上手超简单~
五、常见坑位预警:这些问题要注意!
- Jenkins访问GitLab失败:检查GitLab的访问令牌权限够不够,服务器之间网络通不通(比如防火墙没开8080、80端口)
- 构建时依赖安装失败 :换国内镜像源(比如pip用清华源:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple) - Webhook不触发:在GitLab的项目设置 → Integrations中,检查Webhook URL是否正确,有没有添加Jenkins的用户名和API token(格式:http://用户名:API token@JenkinsIP:8080/project/项目名)
- 测试用例执行失败:先在本地跑通pytest,确保测试用例没问题,再触发自动化流程
六、最后总结:自动化让研发更高效
其实Jenkins和GitLab CI的集成一点都不难,核心就是"配置连接 → 定义流程 → 自动触发"这三步。2025年的DevOps趋势就是智能化、低代码化,咱们不用搞复杂的配置,借助工具的新功能,就能快速搭建稳定的自动化流程~
想想看,以前要花几小时的构建、测试、部署工作,现在几分钟就能自动完成,开发者能把更多时间花在写代码上,运维也不用熬夜手动操作,这就是自动化的魅力呀!
如果你的项目是其他语言(比如Java、Go),或者需要部署到K8s集群,也可以基于这个思路调整脚本,Jenkins和GitLab CI的扩展性超强,几乎能满足所有研发场景~ 快去试试吧,体验一把"代码提交,万事大吉"的快乐!
目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步。想要系统学习AI知识的朋友可以看看我的教程http://blog.csdn.net/jiangjunshow,教程通俗易懂,风趣幽默,从深度学习基础原理到各领域实战应用都有讲解。