首页/文章/ 详情

浅尝gitlab仓库的CICD功能

1年前浏览2603

大家好,我是李慢慢。

在上一篇文章中,简要介绍了下CICD流程。

关于自动驾驶开发和CI/CD流程

GitLab CI/CD 的原理是“通过GitLab Runner服务启动一个执行器来运行 .gitlab-ci.yml 中各个阶段的脚本命令,并将运行的结果返回给 GitLab”。

云端:

仓库中的“.gitlab-ci.yml”文件中定义了CICD触发的条件、具体的执行器gitlab runner以及执行的内容等;

本地:

安装好gitlab runner后,通过注册,可以在本地创建多个runner绑定到指定的gitlab仓库上。并执行云端.gitlab-ci.yml文件中定义的脚本内容,将结果反馈回gitlab。runner是以守护进程/服务时刻运行着的。

下面,我特意注册了个gitlab账号,创建一个小仓库,本地安装runner,然后配置runner,测试CICD。以下是过程记录。

1、注册一个gitlab仓库后,创建一个名为“lmm_test_cicd”的空仓库。

2、进行CICD配置,入口如下:

3、点击Runners或者后面的Expand,可以展开该项目,进行gitlab runner配置:

4、配置新的runner;

5、按照下面的步骤在本地电脑执行:

步骤1:

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

    步骤二:

      sudo gitlab-runner register  --url https://gitlab.com  --token glrt-Szjn_tbtPyx29sNiWsQs

      运行完后,查看下runner的状态:

      步骤三:

        sudo gitlab-runner run

        “强烈建议所有的gitlab-runner”指令均以root权限运行,即“sudo gitlab-runner xxxxxx”。

        上述步骤执行完成后,gitlab页面也会有成功的提示:

        创建成功的runner服务也会出现在CICD配置项目列表里:

        6、点击“edit”按钮可以查看或者修改runner配置内容:

        7、点击“save changes”后可以看到完整的配置内容列表:

        8、进入Pipeline流水线,查看当前流水线上的任务,由于还没有任何配置,会是什么都没有,还会提示您去创建一个yml文件开启流水线。

        9、点击“try test templates”生成“.gitlab-ci.yml”文件,如下:

        会看到gitlab会自动生成这个yml文件的内容:

          # This file is a template, and might need editing before it works on your project.# This is a sample GitLab CI/CD configuration file that should run without any modifications.# It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts,# it uses echo commands to simulate the pipeline execution.## A pipeline is composed of independent jobs that run scripts, grouped into stages.# Stages run in sequential order, but jobs within stages run in parallel.## For more information, see: https://docs.gitlab.com/ee/ci/yaml/index.html#stages## You can copy and paste this template into a new `.gitlab-ci.yml` file.# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword.## To contribute improvements to CI/CD templates, please follow the Development guide at:# https://docs.gitlab.com/ee/development/cicd/templates.html# This specific template is located at:# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.ymlstages:          # List of stages for jobs, and their order of execution  - build  - test  - deploybuild-job:       # This job runs in the build stage, which runs first.  stage: build  script:    - echo "Compiling the code..."    - echo "Compile complete."unit-test-job:   # This job runs in the test stage.  stage: test    # It only starts when the job in the build stage completes successfully.  script:    - echo "Running unit tests... This will take about 60 seconds."    - sleep 60    - echo "Code coverage is 90%"lint-test-job:   # This job also runs in the test stage.  stage: test    # It can run at the same time as unit-test-job (in parallel).  script:    - echo "Linting code... This will take about 10 seconds."    - sleep 10    - echo "No lint issues found."deploy-job:      # This job runs in the deploy stage.  stage: deploy  # It only runs when *both* jobs in the test stage complete successfully.  environment: production  script:    - echo "Deploying application..."    - echo "Application successfully deployed."

          10、先不解释这个yml文件的内容,也不要做改变,直接点击“commit changes”确认即可;

          11、回到主界面,发现主目录下多了这个yml文件:

          同时,Pipelines已经触发了CICD任务(因为仓库检测到了更新):

          任务的状态从“running”到“passed”可能需要一些时间。(如果您出现了“pending”或者“failed”等状态,需要自己百度找一下原因

          12、点击一下“passed”状态按钮,可以进入到具体的状态阶段进行查看:

          这里为什么有一个build,一个test,一个deploy共三个阶段,以及每个阶段有几个任务,则和yml文件中的定义息息相关了。再随意选一个任务点进去,可以看到类似命令行的东西,显示了每一个任务的执行过程:

          上面这个红框里的东西是不是很眼熟?因为他就是yml文件里定义的东西呀:

          13、上面就是一个简单的CICD过程,现在,我们来简单来修改下README.md文件,使得仓库发生一些变化,来主动触发CICD流程看一下。

          步骤1、修改README.md,我这里就简单加了个注释。

          步骤2、查看任务:

          最后来总结一下:

          以前总是感觉CICD这个过程很神奇,gitlab的仓库的代码只要更新了,就能触发CICD去做一些事情,通过今天的小测试,感觉其实也没那么复杂。只要在本地安装好gitlab-runner执行器,并与gitlab仓库进行绑定,那么就能根据gitlab仓库的更新监控机制,自动触发CICD流程,本地runner运行的程序则可以由yml文件进行指定。

          后面将继续探索CICD的使用,比如通过docker来运行gitlab-runner服务,比如更改CICD的触发逻辑,比如执行仓库中的特定脚本,比如启动多个runner服务,比如在网页端获取本地脚本执行的结果文件等内容。

          欢迎持续关注哦。

          来源:车路慢慢
          自动驾驶
          著作权归作者所有,欢迎分享,未经许可,不得转载
          首次发布时间:2023-06-22
          最近编辑:1年前
          李慢慢
          硕士 自动驾驶仿真工程师一枚
          获赞 11粉丝 63文章 122课程 0
          点赞
          收藏
          未登录
          还没有评论
          课程
          培训
          服务
          行家
          VIP会员 学习 福利任务 兑换礼品
          下载APP
          联系我们
          帮助与反馈