云服务器GitLab-CI持续集成环境搭建

一、GitLab安装配置

1. 系统准备

bash
# 安装依赖
apt update
apt install -y curl openssh-server ca-certificates postfix

# 添加GitLab源
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash

# 安装GitLab
apt install gitlab-ce

2. 初始配置

ruby
# /etc/gitlab/gitlab.rb
external_url 'http://gitlab.example.com'
gitlab_rails['gitlab_shell_ssh_port'] = 22
gitlab_rails['time_zone'] = 'Asia/Shanghai'

# 应用配置
gitlab-ctl reconfigure

二、Runner安装配置

1. Runner安装

bash
# 添加Runner源
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | bash

# 安装Runner
apt install gitlab-runner

# 启动服务
systemctl enable gitlab-runner
systemctl start gitlab-runner

2. Runner注册

bash
# 注册Runner
gitlab-runner register \
--url "https://gitlab.example.com/" \
--registration-token "PROJECT_REGISTRATION_TOKEN" \
--description "docker-runner" \
--executor "docker" \
--docker-image "docker:latest"

三、CI/CD配置

1. GitLab CI配置

yaml
# .gitlab-ci.yml
stages:
- build
- test
- deploy

build_job:
stage: build
script:
- mvn clean package
artifacts:
paths:
- target/*.jar

test_job:
stage: test
script:
- mvn test

deploy_job:
stage: deploy
script:
- bash deploy.sh
only:
- master

2. Runner执行器配置

toml
# config.toml
[[runners]]
name = "docker-runner"
url = "https://gitlab.example.com/"
token = "PROJECT_TOKEN"
executor = "docker"
[runners.docker]
tls_verify = false
image = "docker:latest"
privileged = true
disable_cache = false
volumes = ["/cache"]

四、环境变量与缓存

1. 变量配置

yaml
variables:
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
DOCKER_HOST: "tcp://docker:2375"

cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- .m2/repository/
- node_modules/

2. Docker缓存

yaml
build:
stage: build
script:
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
cache:
paths:
- .docker

五、Pipeline优化

1. 并行任务

yaml
test_unit:
stage: test
parallel: 3
script:
- mvn test -Dtest=TestClass

test_integration:
stage: test
script:
- mvn verify

2. 条件执行

yaml
deploy_prod:
stage: deploy
script:
- deploy_to_production
rules:
- if: '$CI_COMMIT_BRANCH == "master"'
when: manual
- when: never

六、监控与通知

1. 监控配置

ruby
# gitlab.rb
prometheus['enable'] = true
grafana['enable'] = true

# 应用配置
gitlab-ctl reconfigure

2. 通知配置

yaml
notification:
stage: .post
script:
- |
curl -X POST -H 'Content-Type: application/json' \
--data '{"text":"Pipeline finished"}' \
$WEBHOOK_URL
rules:
- when: always

最佳实践建议

  1. Pipeline设计
  • 保持任务简单
  • 合理使用缓存
  • 配置并行执行
  • 设置超时限制
  1. Runner管理
  • 合理分配资源
  • 使用标签管理
  • 定期清理缓存
  • 监控运行状态
  1. 安全配置
  • 使用安全变量
  • 限制权限范围
  • 配置访问控制
  • 审计日志记录

本指南为您提供了在云服务器上搭建GitLab-CI持续集成环境的完整方案。记住,CI/CD环境的配置是一个需要持续优化的过程,建议根据实际项目需求进行调整。

重要提示:

  1. 定期更新GitLab版本
  2. 监控Runner状态
  3. 优化构建性能
  4. 做好备份计划

同时,建议加入GitLab社区,及时了解最新的特性和最佳实践。对于生产环境的CI/CD系统,要建立完善的监控机制,确保构建流程的稳定性和安全性。

实操指南知识库

云服务器Doris分析型数据库部署

2024-12-17 15:40:10

实操指南知识库

云服务器SonarQube代码质量平台部署与配置

2024-12-17 17:09:28

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧