1. 准备工作:确保Debian系统基础环境就绪
在配置GitLab CI/CD前,需确保Debian系统已更新且安装必要依赖,为后续步骤提供基础支持:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl openssh-server ca-certificates tzdata perl
2. 安装GitLab Runner(CI/CD任务执行代理)
GitLab Runner是执行.gitlab-ci.yml中定义任务的守护进程,需先安装并注册到GitLab实例:
- 添加GitLab Runner仓库并安装:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash sudo apt install gitlab-runner -y - 注册Runner到GitLab项目:
运行以下命令,按提示输入GitLab实例URL(如http://your-gitlab-server)和项目注册令牌(从GitLab项目→Settings→CI/CD→Runners获取):
选择合适的执行器(如sudo gitlab-runner registerShell,适合简单脚本;Docker,适合容器化环境),并设置Runner描述(如debian-runner)和标签(如linux)。
3. 编写核心配置:.gitlab-ci.yml文件
在项目根目录创建.gitlab-ci.yml文件,定义CI/CD流程的阶段(Stages)、任务(Jobs)和执行逻辑。以下是一个基础示例:
# 定义阶段执行顺序(build→test→deploy)
stages:
- build
- test
- deploy
# 定义全局变量(可选,如项目名称、目录)
variables:
PROJECT_NAME: "my-debian-app"
PROJECT_DIR: "/opt/${PROJECT_NAME}"
# 构建阶段:编译或打包项目
build_job:
stage: build
script:
- echo "Building ${PROJECT_NAME}..."
- mkdir -p ${PROJECT_DIR}
- cp -r * ${PROJECT_DIR}/ # 模拟复制项目文件到目标目录
artifacts:
paths:
- ${PROJECT_DIR}/ # 将构建产物传递给后续阶段
expire_in: 1 week # 工件保留1周
# 测试阶段:运行项目测试
test_job:
stage: test
script:
- echo "Running tests for ${PROJECT_NAME}..."
- cd ${PROJECT_DIR} && echo "Test passed!" # 模拟测试命令
needs: ["build_job"] # 依赖build_job成功完成
# 部署阶段:将应用部署到目标服务器
deploy_job:
stage: deploy
script:
- echo "Deploying ${PROJECT_NAME} to production..."
- scp -r ${PROJECT_DIR}/* user@remote-server:/var/www/html/ # 模拟SCP部署
only:
- master # 仅master分支触发部署
when: manual # 手动触发(避免自动部署风险)
4. 配置高级功能(可选但常用)
-
SSH密钥:实现远程服务器无密码访问
若部署阶段需要SSH连接到远程服务器,需配置SSH密钥:- 在Runner服务器生成密钥对:
ssh-keygen -t rsa -b 4096 -C "gitlab-ci-runner" -N "" -f ~/.ssh/gitlab_runner_key - 将公钥(
id_rsa.pub)添加到远程服务器的~/.ssh/authorized_keys文件中。 - 在GitLab项目→
Settings→CI/CD→Variables中添加变量:SSH_PRIVATE_KEY:值设置为私钥内容(cat ~/.ssh/gitlab_runner_key)。
- 在
.gitlab-ci.yml的before_script中添加SSH配置:before_script: - 'which ssh-agent || (apt-get update -y && apt-get install -y openssh-client)' - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null - mkdir -p ~/.ssh - chmod 700 ~/.ssh - ssh-keyscan remote-server >> ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts
- 在Runner服务器生成密钥对:
-
缓存:加速构建过程
通过缓存依赖或中间文件,减少重复下载时间(如Python的pip缓存):cache: paths: - .cache/pip/ # 缓存pip安装的包
5. 触发与监控CI/CD管道
- 自动触发:将
.gitlab-ci.yml文件提交到GitLab仓库并推送,GitLab会自动检测并触发管道:git add .gitlab-ci.yml git commit -m "Add GitLab CI/CD configuration" git push origin master - 手动触发:若
deploy_job设置为when: manual,可在GitLab项目→CI/CD→Pipelines中点击“Run pipeline”手动启动部署。 - 监控日志:在
CI/CD→Pipelines页面查看各阶段执行状态,点击任务可查看详细日志,用于调试失败问题。
注意事项
- 确保GitLab Runner服务器已安装对应执行器所需工具(如
Docker执行器需安装Docker)。 - 敏感信息(如SSH私钥、数据库密码)应通过GitLab的
Variables功能配置,避免硬编码在.gitlab-ci.yml中。 - 根据项目需求调整
.gitlab-ci.yml的阶段划分和任务脚本(如添加lint阶段检查代码风格)。
以上就是关于“Debian上如何配置GitLab的CI/CD”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm