Gitlab CI/CD 入门教程

前言

开发人员常常提到的 CI/CD 是什么?

  • 是用于集成测试的工具,每次提交代码后自动检测、构建和进行单元测试的过程。这一整条流水线式的测试流程我们称之为 pipeline。

入门教程

如何使用 CI/CD?

  • 首先需要确保有可用的 runner(如何确保呢?请看 CI/CD 入门),来运行下文提到的各种任务。
  • 在仓库的根目录下创建并编写一个 .gitlab-ci.yaml 文件,记录需要执行的各种指令,比如进行规范检查(例如PEP8)、自动打包、自动部署等。该遵循 yaml 文件的语法,可以使用 gitlab 自带的 CI lint 检查。

使用技巧

在编写 .gitlab-ci.yaml 文件的时候,有很多关键字,本文列举了一些常用&重要的关键字。

  • stages 关键字:定义了pipeline中各任务的执行顺序。 需要注意以下几点:

    • 如果两个任务对应的stage名相同,则这两个任务会并行运行

    • 一个stage成功执行完了,才能执行下一个stage(如果失败了,下一个stage将不会执行,如果想要修改该特性,可以使用when关键字,见下文)

    • 如果想要控制某一个stage在最开始,或者最后执行,可以使用.pre.post 关键字

    • 举例( 下面样例的执行顺序是: build-job1 & build-job2并行执行 -> test1 -> deploy。)

    stages:
      - build
      - test
      - deploy
    
    build-job1:
      stage: build
      script: echo "build-job1"
    
    build-job2:
      stage: build
      script: echo "build-job2"
    
    test1:
      stage: test
      script: echo "test"
    
    deploy1:
      stage: deploy
      script: echo "deploy"
    ...
    
  • only/except 关键字:控制任务的触发条件。

    • only关键字的默认策略是[‘branches’, ‘tags’],即你提交了一个分支或者打了标签,就会触发;except 和 only 语义相反。

    • 策略的分类:

      • branches: 当你的Git Refs对应的是一个分支时触发
      • tags: 当你的Git Refs对应的是一个标签时触发
      • pushes: 当你使用git push时触发
      • merge_requests: 当你创建或者更新一个merge_requests时触发
  • tags 关键字:指定使用哪个Runner(哪个机器)去执行任务,注意与上文only关键字的tags进行区分

  • cache关键字:指定了需要缓存的文件夹或者文件,目的是为了加快执行速度

  • artifacts关键字:和cache类似,也可以缓存文件或文件夹,不同的是,这些文件可以在Gitlab的UI界面中下载,一般可用来存储Android打包生成的apk。

  • allow_failure关键字:允许任务失败,任务失败将不会影响pipeline失败。

  • dependencies关键字:定义了任务的依赖关系,比如依赖其他的项目、库、工具、任务等。

  • variables关键字:定义局部变量(只在当前的任务中生效)

  • when关键字:可以手动修改stage原有的执行规则。一共有五个值:

    • on_success:只有前面stages的所有工作成功时才执行,这是默认值。
    • on_failure:当前面stages中任意一个jobs失败后执行
    • always:无论前面stages中jobs状态如何都执行
    • manual:手动执行
    • delayed:延迟执行
  • 更多关键字参考:https://docs.gitlab.cn/jh/ci/yaml/

完整样例

来一个完整的 .gitlab-ci.yml 例子:

  • stages:  # 定义了两个stage,先 build 后 test
      - build
      - test
    
    cache: # 定义 cache 缓存文件夹路径
      paths:
        - cache_dir/
    
    variables:  # 定义了全局变量,所有任务中的NVIDIA_GROUP变量都是 xxx
      NVIDIA_GROUP: xxx
    
    build-job:
      stage: build
      variables:
        DOCKER_IMAGE: $REGISTRY/$IMAGE_ID  # 专属于 build-job 的局部变量
      only:  # 当前任务只会在打 tag 和master 分支有提交时才会触发
        - tags
        - master
      tags:  # 指定当前任务在 machine1 这台机器上执行
        - machine1
      script: # 当前任务的执行脚本
        - echo "build-job is runing"
      cache:  # 当前任务的缓存文件夹
        - binaries/
      artifacts:
        paths:
          - html_doc/
      allow_failure: true  # 允许当前任务失败
    
    test-job:
      stage: test
      dependencies:  # 当前任务依赖 build-job 的执行结果
        - build-job
      only:  # 当前任务只在 master 分支有所提交的时候才会触发
        - master
      script:
        - echo "test-job is running"
    

参考资料:

  • Gitlab-CI使用教程:https://juejin.cn/post/6844904045581172744
  • .gitlab-ci.yml 关键字参考: https://docs.gitlab.cn/jh/ci/yaml/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gitlab CI/CD指的是Gitlab提供的持续集成和持续交付的功能。它可以帮助开发团队实现自动化的构建、测试和部署过程,从而提高开发效率和软件质量。 要使用GitLab CI/CD,需要熟悉.gitlab-ci.yml配置文件的语法及其属性。这个配置文件定义了构建和部署流程的步骤、依赖关系和环境变量等信息。你可以根据项目的需求自定义配置文件,GitLab CI/CD会根据配置文件的内容来执行相应的操作。 GitLab CI/CDGitLab中内置的一个功能强大的工具,它可以将连续集成、交付和部署应用于软件项目,而无需依赖第三方应用程序或集成。具体来说,它通过使用GitLab Runner来执行构建和部署作业,可以支持各种不同的项目类型和编程语言。你可以在GitLab的界面上配置、管理和监控CI/CD管道,查看运行结果和日志。 总之,GitLab CI/CD是一个强大的工具,可以帮助开发团队实现持续集成和持续交付,提高软件开发的效率和质量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Gitlab CI/CD 简单介绍](https://blog.csdn.net/wangjiang_qianmo/article/details/122867335)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [使用GitLab进行CI/CD简介](https://blog.csdn.net/FatTigerx/article/details/103766541)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值