Linux中GitLab如何部署CI/CD
导读:1. 前置准备:安装GitLab(若未部署) 在Linux服务器上安装GitLab是实现CI/CD的基础。以Ubuntu为例,步骤如下: 安装依赖包:sudo apt-get install -y curl openssh-server...
1. 前置准备:安装GitLab(若未部署)
在Linux服务器上安装GitLab是实现CI/CD的基础。以Ubuntu为例,步骤如下:
- 安装依赖包:
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
- 添加GitLab软件源:
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
- 安装GitLab CE:
sudo apt-get install gitlab-ce
- 配置GitLab:编辑
/etc/gitlab/gitlab.rb
,设置external_url 'http://your-server-ip'
(替换为服务器IP或域名),运行sudo gitlab-ctl reconfigure
使配置生效 - 启动服务:
sudo gitlab-ctl start
,并设置开机自启:sudo systemctl enable gitlab-ce
访问http://your-server-ip
完成GitLab初始化配置(设置root密码、管理员账号等)。
2. 安装与注册GitLab Runner
GitLab Runner是执行CI/CD任务的代理,需单独安装并注册到GitLab实例:
- 安装Runner(以Ubuntu为例):
curl -L --output /etc/apt/trusted.gpg.d/gitlab.asc https://packages.gitlab.com/gitlab/gitlab-runner/gpgkey echo "deb https://packages.gitlab.com/gitlab/gitlab-runner/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gitlab-runner.list sudo apt-get update sudo apt-get install gitlab-runner
- 注册Runner:
运行sudo gitlab-runner register
,按提示输入:- GitLab实例URL(如
https://gitlab.com
或你的自建GitLab地址); - 注册Token(在GitLab项目页面→
Settings
→CI/CD
→Runners
中获取); - 选择Executor(推荐
shell
,适用于简单任务;若需要隔离环境可选docker
); - 设置Runner描述(如“My Linux Runner”)和标签(如
linux,deploy
,用于匹配项目中的Job标签)。
注册完成后,Runner会自动启动并监听GitLab触发的任务。
- GitLab实例URL(如
3. 创建.gitlab-ci.yml配置文件
在项目根目录下创建.gitlab-ci.yml
文件,定义CI/CD流程的核心逻辑(包括阶段、任务、产物等)。以下是一个通用示例:
stages:
- build # 构建阶段:编译代码、生成产物
- test # 测试阶段:运行单元测试、集成测试
- deploy # 部署阶段:将产物部署到目标环境
# 构建任务
build_job:
stage: build
script:
- echo "Building the project..."
- mkdir -p build
- cd build &
&
cmake .. &
&
make # 示例:C++项目构建
artifacts:
paths:
- build/*.jar # 保存构建产物(如Java的jar包)
expire_in: 1 hour # 产物过期时间(可选)
# 测试任务
test_job:
stage: test
script:
- echo "Running tests..."
- cd build &
&
ctest # 示例:C++项目测试
needs: ["build_job"] # 依赖构建任务完成(可选,确保构建成功后再测试)
# 部署任务(仅master分支触发)
deploy_job:
stage: deploy
script:
- echo "Deploying to production server..."
- scp -r build/* user@remote-server:/var/www/html # 示例:SCP传输文件到Linux服务器
only:
- master # 仅当代码推送到master分支时触发(可选,可改为其他分支或标签)
关键说明:
stages
:定义流程的阶段顺序(必填,任务按阶段依次执行);script
:每个任务的具体执行命令(必填);artifacts
:保存任务生成的产物(如编译后的文件、测试报告),供后续任务使用(可选);needs
:指定任务依赖的其他任务(可选,确保依赖任务成功后再执行);only
/except
:控制任务触发的条件(如仅特定分支、标签或提交信息)(可选)。
4. 配置CI/CD变量(可选但推荐)
若流程中需要敏感信息(如Docker Registry密码、服务器SSH密钥、第三方服务API密钥),可通过GitLab的CI/CD变量管理:
- 进入项目页面→
Settings
→CI/CD
→Variables
; - 点击“Add variable”,输入变量名(如
CI_DEPLOY_SERVER_SSH_KEY
)和值(如服务器SSH私钥内容); - 勾选“Mask variable”(隐藏变量值,在日志中不显示)和“Protect variable”(仅受保护分支可使用);
- 在
.gitlab-ci.yml
中通过$变量名
引用(如ssh -i $CI_DEPLOY_SERVER_SSH_KEY user@remote-server
)。
5. 触发CI/CD流程
将.gitlab-ci.yml
文件提交到GitLab仓库并推送,Runner会自动检测并执行流程:
git add .gitlab-ci.yml
git commit -m "Add GitLab CI/CD configuration"
git push origin master # 推送到master分支(根据only条件触发)
触发后,可在GitLab项目页面→CI/CD
→Pipelines
查看流程执行状态(成功/失败)、日志输出及每个任务的详情。
6. 监控与调试
- 查看流程状态:通过
CI/CD
→Pipelines
查看所有流程的执行历史,点击流程ID可查看详情; - 查看任务日志:在流程详情页点击任务名称,可查看任务的实时输出(如编译错误、测试失败信息);
- 调试失败任务:若任务失败,可在Runner所在服务器上查看Runner日志(
sudo journalctl -u gitlab-runner
),或在任务日志中分析错误原因(如命令不存在、权限不足)。
注意事项
- Runner权限:确保Runner所在服务器有执行任务所需的权限(如访问GitLab仓库、写入部署目录、连接数据库等);
- 产物管理:合理使用
artifacts
保存必要产物(如编译后的文件、测试报告),避免占用过多存储空间; - 安全性:敏感信息(如服务器密码、API密钥)务必通过CI/CD变量管理,不要直接写在
.gitlab-ci.yml
中; - 流程优化:根据项目需求调整阶段划分(如增加
package
阶段用于打包、sonarqube
阶段用于代码质量检查),或使用Docker executor实现环境隔离(如用Docker镜像运行任务,避免依赖服务器环境)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux中GitLab如何部署CI/CD
本文地址: https://pptw.com/jishu/728347.html