• 「产品运营」研发效能之DevOps平台如何运营?


    前言#

    写代码这项工作,本质就是将工作自动化,减少手工操作提供效率,因为人的本质都是懒狗,程序员也不能例外,为了各种意义的效率提升(懒),我们需要持续集成工具,将代码测试、编译、发布这些重复性很高的工作,全部变成自动化,减轻工作量,提高效率,解放生产力,为华夏伟大复兴贡献力量

    说回正题,持续集成工具主流的就 Jenkins 、Gitlab CI/CD 这些,因为我们刚好在用 Gitlab,所以就不去折腾 Jenkins 了,直接用这个好了~

    关于 Gitlab 的安装,可以参考我之前写的文章:GitLab的安装、配置、使用

    概念科普

    缩略词 CI / CD 具有几个不同的含义。CI/CD 中的"CI"始终指持续集成,它属于开发人员的自动化流程。成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。

    CI/CD 中的"CD"指的是持续交付和/或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。

    …… (省略又臭又长的名词解释)

    只需记得 CI/CD 其实就是一个流程(通常形象地表述为管道),用于实现应用开发中的高度持续自动化和持续监控。因案例而异,该术语的具体含义取决于 CI/CD 管道的自动化程度。许多企业最开始先添加 CI,然后逐步实现交付和部署的自动化(例如作为云原生应用的一部分)。

    安装Gitlab-Runner#

    根据Gitlab官网的指引

    # Download the binary for your system
    sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
    
    # Give it permissions to execute
    sudo chmod +x /usr/local/bin/gitlab-runner
    
    # Create a GitLab CI user
    sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
    
    # Install and run as service
    sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
    sudo gitlab-runner start
    

    服务器使用的是CentOS7系统,实际配置时遇到无法识别gitlab-runner命令的问题,用echo $PATH打印了一下环境变量发现是没有/usr/local/bin,添加到PATH就可以了

    安装的时候会自动创建gitlab-runner用户,Runner会在这个用户下执行各种任务,当然用户名和Home目录都可以自定义,就是上面倒数第二个命令。

    注册Runner#

    在Gitlab中,依次进入:菜单 - 管理员 - 概览 - Runner - 注册一个实例Runner

    就会出来一个token,使用以下命令注册即可

    sudo gitlab-runner register --url http://gitlab地址:端口/ --registration-token HjymWn4gEzHaVizpvG
    

    注册过程中会让你输入一些信息,最后需要选择executer,可选项有virtualbox、docker、shell之类的,这里我选的shell,直接执行命令控制项目部署。其他的executer等后面再来研究用法。

    注册完辽就可以在Gitlab的管理界面看到这个Runner了

    为了让所有项目都能用这个Runner进行部署,需要修改一下配置,把这个钩打上

    配置#

    为了让gitlab-runner用户能够使用docker,需要将其加入到docker用户组

    usermod -aG docker gitlab-runner
    

    配置docker代理#

    因为我们的生产服务器不能直接访问外网,所以还得配置一下docker的代理

    编辑文件:/home/gitlab-runner/.docker/config.json

    {
     "proxies":
     {
       "default":
       {
         "httpProxy": "http://proxy_ip:8080",
         "httpsProxy": "http://proxy_ip:8080",
         "noProxy": "localhost,127.0.0.1"
       }
     }
    }
    

    gitlab-ci.yml#

    只要在项目的根目录中加入这个文件,然后推送代码到 Gitlab (一般来说是 master 分支),Gitlab Runner 就会根据 script 来执行构建任务。

    平时开发时,如果不想要自动构建,可以 checkout 到其他分支(例如 dev)进行开发,等到功能完成需要发布的时候,再合并到 master 分支即可。

    这里我写的是用 docker 部署一个 AspNetCore 应用的例子,实际还有 Python、Go、前端项目等常用例子,我后面再更新相关的文章~

    variables:
      GIT_STRATEGY: none
    stages:
      - deploy
    deploy_job:
      stage: deploy
      only:
        - master
      script:
        - cd /home/gitlab-runner/projects/dotnet/dashboard
        - rm -rf dashboard-backend
        - git clone http://127.0.0.1:8080/deali/dashboard-backend.git
        - cd dashboard-backend
        - docker-compose up --build -d
    

    小结#

    这样就搞定了 Gitlab CI/CD 的基础用法,也就是所谓的“持续集成”,可以说灰常好用了~

    当然它的功能很强、很多,本文的例子只是用到了其中一种,更多的用法我还在探索中,有收获的话后续会更新这个系列的文章。

    参考资料#

  • 相关阅读:
    xargs命令
    Leetcode71简化路径
    【Web】Java反序列化之CC6--HashMap版
    C++ PCL点云曲率分割颜色标识
    基于51单片机的八路多路温度测控系统proteus仿真原理图PCB
    重读VDSR
    前8月,超百万台标配!高阶智驾域控「新」变化
    面经:中国人民银行金融科技研究院
    DDR controller 验证平台以及功能测试用例
    C++ 类和对象(一)
  • 原文地址:https://www.cnblogs.com/laofo/p/16746319.html