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服务器对应目录下,可以看到自动化编译、测试、发布已经完成。

相关推荐
dleei3 小时前
使用docker创建gitlab仓库
前端·docker·gitlab
囚~徒~7 小时前
flask 接口文档自动化
python·flask·自动化
hasnum9 小时前
探索 GitLab-Connect:一个连接 GitLab 的轻量级工具
gitlab
SuperCreators1 天前
DeepSeek与浏览器自动化AI Agent构建指南
人工智能·自动化
挽风8211 天前
Pytest自动化框架
自动化·pytest·模块测试
DevSecOps选型指南1 天前
DevSecOps CI/CD 管道中数字供应链安全的集成策略
运维·安全·ci/cd
qq_白羊座1 天前
UI自动化:Python + Selenium4.6+版本 环境搭建
python·自动化
Python数据分析与机器学习1 天前
《基于锂离子电池放电时间常数的自动化电量评估系统设计》k开题报告
运维·性能优化·自动化·软件工程·软件构建·个人开发
_深海凉_1 天前
OmniParser技术分析(一)
深度学习·目标检测·ui·自动化
学金融的程序员懒羊羊1 天前
散户如何实现自动化交易下单——篇1:体系介绍与获取同花顺资金账户和持仓信息
运维·自动化