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实例:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt install gitlab-runner -y
http://your-gitlab-server)和项目注册令牌(从GitLab项目→Settings→CI/CD→Runners获取):sudo gitlab-runner register
选择合适的执行器(如Shell,适合简单脚本;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密钥:
ssh-keygen -t rsa -b 4096 -C "gitlab-ci-runner" -N "" -f ~/.ssh/gitlab_runner_key
id_rsa.pub)添加到远程服务器的~/.ssh/authorized_keys文件中。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
缓存:加速构建过程
通过缓存依赖或中间文件,减少重复下载时间(如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页面查看各阶段执行状态,点击任务可查看详细日志,用于调试失败问题。注意事项
Docker执行器需安装Docker)。Variables功能配置,避免硬编码在.gitlab-ci.yml中。.gitlab-ci.yml的阶段划分和任务脚本(如添加lint阶段检查代码风格)。