GitLab CI/CD实现项目自动化部署

1 GitLab CI/CD介绍

  • GitLab CI/CD 是 GitLab 中集成的一套用于软件开发的持续集成(Continuous Integration)、持续交付(Continuous Delivery)和持续部署(Continuous Deployment)工具。这套系统允许开发团队自动化软件交付流程,从代码变更的检测、构建、测试到最终部署到生产环境的整个过程。

  • 持续集成(CI)

    • 每次代码推送至版本控制系统(如GitLab仓库),系统自动进行构建和测试。这确保了代码变更能够快速集成到主分支,同时发现并修复集成错误。
  • 持续交付(CD)

    • 在持续集成的基础上,进一步自动化将已验证的代码变更交付到一个预生产或生产准备就绪的环境中。这个阶段可能包括更复杂的测试套件、性能测试等,确保软件随时可以部署到生产环境,但实际部署可能需要人工审批。
  • 持续部署(CD)

    • 在持续交付的基础上,将交付过程完全自动化,无需人工干预即可将通过所有测试的代码直接部署到生产环境。这意味着每次代码变更经过测试后都能快速安全地到达用户手中。

2 GitLab CI/CD 与 GitLab Runner

  • GitLab CI/CD 是一套集成在GitLab平台中的服务,负责管理软件开发生命周期中的构建、测试和部署等流程。它通过读取项目中的 .gitlab-ci.yml 配置文件来定义各种任务(Jobs)和流程(Pipelines),从而实现持续集成和持续部署的目标。

  • GitLab Runner 则是实现这些CI/CD流程的实际工作者或执行引擎。它是单独部署的一个程序,可以安装在不同的操作系统(如Linux、macOS、Windows)上,并与GitLab实例进行注册和绑定。一旦有新的提交触发了GitLab CI/CD流程,GitLab会调度已注册的Runner来执行.gitlab-ci.yml中定义的任务。

  • 简单来说,GitLab CI/CD是计划者和协调者,负责定义何时以及如何执行任务,而GitLab Runner则是具体执行这些任务的实体。Runner可以是共享的(服务于多个项目)或者专属的(仅为单一项目服务),并且可以根据项目需求配置不同的执行环境(例如使用Docker容器来隔离构建环境)。

3 GitLab Runner

3.1 安装

  • 以Centos为例
  • gitlab-runner安装包下载,在Package栏搜索gitlab-runner,可以下载这个版本 el/7/x86_64/gitlab-runner-16.6.0-1.x86_64.rpm
  • 安装命令如下
sh 复制代码
  # 安装
  sudo rpm -ivh gitlab-runner-16.6.0-1.x86_64.rpm	
  # 查看是否安装成功
  gitlab-runner -h

3.2 注册

  • 注册前需要先从gitlab服务器获取token。

  • 在主页面的Projects中找到 Configure GitLab

  • 找到CI/CD中的Runners

  • 找到token保存下来

  • 注册
    *

    sh 复制代码
      # 注册runner
      sudo gitlab-runner register
    • 注册过程中需要填入一些信息,Token就是上面复制的那个,具体如下
    • 注册完刷新gitlab页面,可以看到有一个Runner实例。
    • 如果找不到这个界面,可以这样访问 http://192.168.206.137/admin/runners
  • 点击编辑

  • 勾选Run untagged jobs,然后保存。

3.3 编写流水线脚本

  • 首先在gitlab中创建一个项目,然后新建一个文件
  • 文件名为 .gitlab-ci.yml,脚本内容就写一个最简单的测试脚本。
  • 脚本内容如下
sh 复制代码
  build:
    stage: build
    script:
      - echo "start build"
  
  test:
    stage: test
    script:
      - echo "start test"
  
  deploy:
    stage: deploy
    script: 
      - echo "start deploy"
  • 保存提交后会自动触发CI/CD流程,在Build中找到Pipelines。
  • 可以看到步骤全部通过
  • 点击Passed可以看到详细流程
  • 点击build,就是build的执行过程
  • 至此,GitLab-CI/CD 自动化部署的流程就通了。可以把 .gitlab-ci.yml 脚本中的内容修改为实际要执行的命令,这样每一次提交代码后,就会自动触发编译、测试、发布步骤。

4 项目演示

  • 比较简单的自动化部署流程为:编译、测试、打包和发布。本项目就主要演示下如何实现自动化的编译、测试和发布。

  • 现在创建一个项目,文件结构如下

    • ├── .gitlab-ci.yml
      ├── main.cpp
      ├── README.md
      └── test.sh
  • .gitlab-ci.yml 内容如下
    *

    sh 复制代码
      # 编译
      build:
        stage: build
        script:
          - echo "start build"
          - g++ main.cpp -o gitlabcicd_test
        # 指定生成的可执行程序存放目录为当前目录
        artifacts:
          paths:
            - gitlabcicd_test
      
      # 测试
      test:
        stage: test
        script:
          - echo "start test"
          - chmod 0777 test.sh
          # 测试
          - ./test.sh
      
      # 发布
      deploy:
        stage: deploy
        script: 
          - echo "start deploy"
          # 模拟发布流程
          - cp gitlabcicd_test package1
  • mian.cpp 中输出一个打印。

  • test.sh 中运行生成的可执行程序。

  • 工程写完后,push到gitlab仓库中,会自动触发cicd流程。

  • 在项目中找到 Build,点击Pipelines。

  • 可以看到,自动化编译、测试、发布流程成功了

  • 点击一个进去,在控制台会有详细打印

  • 进到GitLab Runner服务器对应目录下,可以看到自动化编译、测试、发布已经完成。

相关推荐
qq_426003965 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
其实防守也摸鱼5 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
森叶5 天前
用远程调试端口自动化 Chrome 应用商店发布:做法、三个真坑,以及你必须知道的风险
自动化
懂软件的胡子个哥5 天前
微信机器人为什么需要“回复候选”而不是所有 AI 内容直接发送
运维·微信·自动化·wechatapi·个人微信号二次开发
jingli95 天前
多平台多店铺客服怎么统一接待?千牛/拼多多/抖音/京东/闲鱼/微信/快手切窗口太累,一个后台集中接管的七步落地方案(2026 实操版)
人工智能·自动化·用户运营
坚定信念,勇往无前5 天前
Playwright 的本质
自动化·网络爬虫
乐橙开放平台6 天前
从「多套客户端」到一套开放能力:乐橙视频监控能力复盘
笔记·物联网·自动化·音视频·智能家居
Ticnix6 天前
别再手动上线了:一条命令带备份、健康检查和自动回滚
后端·python·ci/cd