GitLab Linux环境下的CI/CD流程配置指南
GitLab Runner是执行CI/CD任务的守护进程,需先在Linux服务器上安装并配置。常见安装方式包括包管理器(如Ubuntu的apt、CentOS的yum)或Docker:
sudo apt-get update
sudo apt-get install gitlab-runner
docker run -d --name gitlab-runner --restart always \
-v "/srv/gitlab-runner/config:/etc/gitlab-runner" \
gitlab/gitlab-runner:latest
安装完成后,需将Runner注册到GitLab实例:
sudo gitlab-runner register
按提示输入GitLab实例URL(如https://gitlab.com)、注册Token(从GitLab项目→Settings→CI/CD→Runners获取),选择执行器类型(如shell、docker),并配置Runner标签(如linux、deploy)。
在项目根目录下创建.gitlab-ci.yml文件,定义CI/CD流程的阶段(stages)和任务(jobs)。示例如下:
stages:
- build # 构建阶段
- test # 测试阶段
- deploy # 部署阶段
build_job:
stage: build
script:
- echo "Building the project..."
- ./build_script.sh # 自定义构建脚本
artifacts:
paths:
- build/ # 传递构建产物到后续job
test_job:
stage: test
script:
- echo "Running tests..."
- ./run_tests.sh # 自定义测试脚本
needs: ["build_job"] # 依赖build_job完成
deploy_job:
stage: deploy
script:
- echo "Deploying to production..."
- scp -r build/* user@remote_server:/var/www/html # 部署到远程服务器
only: ["master"] # 仅master分支触发
关键说明:
stages:定义流程的阶段顺序(需按从左到右执行);script:每个job的具体执行命令;artifacts:传递构建产物到后续job;needs:定义job依赖关系;only/except:控制分支触发条件。敏感信息(如SSH私钥、服务器地址、数据库密码)需通过GitLab的CI/CD变量管理,避免硬编码到.gitlab-ci.yml中:
SSH_PRIVATE_KEY、DEPLOY_SERVER)和值;.gitlab-ci.yml中通过$变量名引用(如ssh -i $SSH_PRIVATE_KEY user@$DEPLOY_SERVER)。CI/CD流程的触发方式有两种:
git push origin master)时,GitLab会自动检测.gitlab-ci.yml并启动流水线;build_job),可查看详细的命令输出和错误信息;allow_failure: false(默认),或在脚本中添加set -x(打印执行的每一行命令)。cache指令缓存依赖项(如node_modules、maven仓库),加速构建速度。示例如下:build_job:
stage: build
script:
- npm install
- npm run build
cache:
paths:
- node_modules/ # 缓存node_modules目录
parallel指令并行运行多个任务(如同时运行单元测试和集成测试);docker执行器构建和推送Docker镜像,或通过kubectl部署到Kubernetes集群。示例如下:deploy_job:
stage: deploy
image: alpine/helm:latest # 使用Helm部署
script:
- helm upgrade --install my-app ./chart --namespace prod
only: ["master"]
通过以上步骤,可在Linux环境下快速搭建GitLab CI/CD流程,实现代码的自动化构建、测试和部署。根据项目需求,可进一步扩展流程(如添加代码质量检查、通知机制),提升开发效率。