首页主机资讯gitlab在ubuntu上如何实现CI/CD

gitlab在ubuntu上如何实现CI/CD

时间2025-11-03 12:35:04发布访客分类主机资讯浏览1439
导读:GitLab在Ubuntu上实现CI/CD的完整步骤 1. 准备工作:安装GitLab(若未部署) 若尚未在Ubuntu上部署GitLab,需先完成安装。以下是Docker方式(推荐,便于管理)的安装步骤: 安装Docker和Docker...

GitLab在Ubuntu上实现CI/CD的完整步骤

1. 准备工作:安装GitLab(若未部署)

若尚未在Ubuntu上部署GitLab,需先完成安装。以下是Docker方式(推荐,便于管理)的安装步骤:

  • 安装Docker和Docker Compose:
    sudo apt-get update
    sudo apt-get install -y docker.io docker-compose
    
  • 创建docker-compose.yml文件:
    version: '3'
    services:
      gitlab:
        image: gitlab/gitlab-ce:latest
        restart: always
        environment:
          GITLAB_OMNIBUS_CONFIG: |
            external_url 'http://your-gitlab-domain'  # 替换为你的GitLab域名或IP
        ports:
          - '80:80'
          - '443:443'
        volumes:
          - '/etc/gitlab:/etc/gitlab'
          - '/var/run/docker.sock:/var/run/docker.sock'
          - '/var/opt/gitlab:/var/opt/gitlab'
    
  • 启动GitLab容器:
    sudo docker-compose up -d
    
  • 访问http://your-gitlab-domain,完成初始配置(设置root密码、创建项目等)。

2. 安装并注册GitLab Runner

GitLab Runner是执行CI/CD任务的代理,需在Ubuntu上安装并注册到GitLab项目。

  • 安装Runner
    推荐使用Docker安装(轻量且隔离):
    docker pull gitlab/gitlab-runner:latest
    docker run -d --name gitlab-runner --restart always \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v gitlab-runner-config:/etc/gitlab-runner \
      gitlab/gitlab-runner:latest
    
  • 注册Runner
    1. 进入GitLab项目页面,点击Settings → CI/CD → Runners,复制Registration Token
    2. 在Runner容器内执行注册命令(替换YOUR_REGISTRATION_TOKENgitlab.com为你的Token和GitLab地址):
      docker exec -it gitlab-runner gitlab-runner register \
        --non-interactive \
        --executor "docker" \
        --docker-image alpine:latest \  # 可根据项目需求更换镜像(如node、python等)
        --url "http://gitlab.com" \
        --registration-token "YOUR_REGISTRATION_TOKEN" \
        --description "ubuntu-docker-runner" \
        --tag-list "ubuntu,docker" \
        --run-untagged="false" \
        --locked="false"
      
    3. 注册成功后,Runner会出现在Runners列表中。

3. 创建.gitlab-ci.yml文件

在项目根目录下创建.gitlab-ci.yml文件,定义CI/CD流程(核心配置)。以下是一个通用示例(包含构建、测试、部署三个阶段):

stages:
  - build    # 构建阶段:编译代码、生成可执行文件
  - test     # 测试阶段:运行单元测试、集成测试
  - deploy   # 部署阶段:将应用部署到目标环境

variables:
  DOCKER_IMAGE: "your-dockerhub-username/your-app:${
CI_COMMIT_SHA}
    "  # Docker镜像名称(含提交SHA)

build_job:
  stage: build
  image: docker:latest  # 使用Docker镜像
  services:
    - docker:dind       # 启用Docker-in-Docker(用于构建镜像)
  variables:
    DOCKER_HOST: tcp://docker:2375
    DOCKER_TLS_CERTDIR: ""  # 禁用TLS验证(仅测试环境使用,生产环境需开启)
  script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY  # 登录GitLab容器注册表
    - docker build -t $DOCKER_IMAGE .  # 构建Docker镜像
    - docker push $DOCKER_IMAGE        # 推送镜像到GitLab注册表

test_job:
  stage: test
  image: node:18  # 根据项目语言选择镜像(如python:3.9、java:11等)
  script:
    - npm install  # 安装依赖(示例为Node.js项目)
    - npm test     # 运行测试

deploy_job:
  stage: deploy
  image: alpine:latest  # 使用轻量级镜像
  script:
    - apk add --no-cache ssh  # 安装SSH客户端(用于远程部署)
    - echo "$SSH_PRIVATE_KEY" >
     /tmp/id_rsa  # 读取私钥(需提前配置CI/CD变量)
    - chmod 600 /tmp/id_rsa
    - ssh -i /tmp/id_rsa -o StrictHostKeyChecking=no user@remote-server "cd /var/www/app &
    &
     docker-compose pull &
    &
     docker-compose up -d"  # SSH到服务器,拉取最新镜像并重启服务
  only:
    - master  # 仅master分支触发部署(可根据需求调整,如tags)

说明

  • stages:定义流程的阶段顺序(必须按此顺序执行)。
  • variables:定义全局变量(如Docker镜像名称、SSH私钥等)。
  • image:指定任务运行的环境(如docker:latest用于Docker操作,node:18用于Node.js项目)。
  • script:定义任务的具体命令(如构建镜像、运行测试、SSH部署)。
  • only:限制任务触发的分支(如仅master分支触发部署)。

4. 配置CI/CD变量(敏感信息管理)

.gitlab-ci.yml中使用了敏感信息(如SSH私钥、Docker Hub密码、API密钥),需通过GitLab的CI/CD变量管理:

  1. 进入项目页面,点击Settings → CI/CD → Variables
  2. 点击Add variable,输入:
    • Key:变量名(如SSH_PRIVATE_KEYDOCKER_REGISTRY_PASSWORD)。
    • Value:变量值(如SSH私钥内容、Docker Hub密码)。
    • Type:选择File(如SSH私钥)或Variable(如密码)。
  3. 勾选Mask variable(隐藏变量值,避免日志泄露),点击Add variable

5. 触发CI/CD流程

  • 自动触发:当代码推送到GitLab仓库(如master分支)时,Runner会自动检测并执行.gitlab-ci.yml中的流程。
  • 手动触发:进入项目CI/CD → Pipelines页面,点击Run pipeline,选择分支和变量(若有),手动启动流程。

6. 查看与调试流水线

  • 查看流水线状态:进入项目CI/CD → Pipelines页面,可看到所有流水线的运行状态(成功/失败/进行中)。
  • 查看任务日志:点击流水线中的某个任务(如build_job),可查看详细日志(包括命令输出、错误信息),用于调试问题。

7. 高级配置(可选)

  • 缓存依赖:加速构建过程,避免每次重新下载依赖(如npm installpip install)。示例:
    build_job:
      cache:
        paths:
          - node_modules/  # 缓存node_modules目录
      script:
        - npm install
        - npm run build
    
  • 条件执行:通过only/except限制任务执行条件(如仅在特定分支、标签或提交信息时触发)。示例:
    deploy_job:
      only:
        - tags  # 仅当推送标签时触发部署(如v1.0.0)
    
  • 多环境部署:通过不同的Runner或变量实现(如devstagingprod环境)。

通过以上步骤,即可在Ubuntu上实现GitLab的CI/CD流程,实现代码的自动化构建、测试和部署。根据项目需求,可进一步定制.gitlab-ci.yml文件(如添加代码质量检查、Docker镜像扫描等任务)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: gitlab在ubuntu上如何实现CI/CD
本文地址: https://pptw.com/jishu/740703.html
ubuntu如何配置gitlab权限 gitlab在ubuntu上如何监控

游客 回复需填写必要信息