美文网首页
1. .gitlab-ci.yaml

1. .gitlab-ci.yaml

作者: shark_tear | 来源:发表于2021-08-18 22:20 被阅读0次

这两天工作上在研究Gitlab的CI/CD,根据目前了解到的知识点来看。Gitlab的CI/CD是从一个代码仓库根目录下的.gitlab-ci.yaml文件作为入口。在这个文件中定义了CI/CD的各个阶段以及在每个阶段中要做的各种工作。

先给出一个示例文件的内容,然后根据示例文件的内容来说一下这个文件的组织结构:

stages:
  - build
  - test

build-code-job:
  stage: build
  script:
    - echo "Check the ruby version, then build some Ruby project files:"
    - ruby -v
    - rake

test-code-job1:
  stage: test
  script:
    - echo "If the files are built successfully, test some files with one command:"
    - rake test1

test-code-job2:
  stage: test
  script:
    - echo "If the files are built successfully, test other files with a different command:"
    - rake test2

上面是gitlab官方给出的一个示例文件,整个文件分为两个部分:

  • 第一部分stages:,定义这个CI/CD流程有几个阶段
  • 第二部分,即下面三个任务(job),在每个任务中使用关键字stage:来标识它是属于哪个阶段的任务。而下面的script:关键字定义的内容就是这个任务实际要做的事情。

对于一个完整的CI/CD来说应该包含4个阶段,即:

  • build,构建阶段,在这个阶段会执行代码编译工作。
  • test,测试阶段,在这个阶段中会使用各种自动化测试用例来测试你的代码是否正常工作。
  • staging,我的理解是预部署阶段,即将测试通过的代码部署到预发布环境,进行正式发布前的回归测试。
  • production,即生产环境阶段,将预发布环境测试通过的代码发布到正式环境上。

而实际的使用中,则是会根据你自己的环境来进行取舍。例如对于一些小公司,根本没有预发布环境,那么测试通过就会直接发布到正式环境上。而有些公司可能根本没有测试的岗位,在 build完毕后,就发布到测试环境,由开发直接进行调测,调测通过后就发布到正式环境。

流水线的阶段和每个阶段的任务定义好以后,在默认情况下,如果有开发人员往这个仓库里提交代码,就会触发对应的流水线。之后就按照定义的阶段依次执行各个阶段里的任务,目前知道的执行任务的规则是:

  • 同一个阶段里的任务会并行执行
  • 可以通过设置让任务按照顺序来执行(例如下一个任务是根据上一个任务的结果来执行)
  • 只要有一个任务失败,整个流水线就会执行失败。(可以通过一些设置来跳过单个失败任务)
  • 每个阶段是按照顺序执行,即上一个阶段的任务全部执行完毕后,才会执行下一个阶段的任务。

流水线中的任务是被流水线关联的Runner获取并执行的,在昨天发布的文章里说到了一些Runner的基础知识,说过在流水线里是通过Runner的名称或者Tag来调用Runner的。

以上就是.gitlab-ci.yaml文件相关的基础知识,在看了这些基础东西后,留下了很多疑惑等待探索:

  • 怎么定义任务所需的变量?
  • 怎么根据条件来执行不同的任务?
  • 每个阶段的任务结果怎么处理?

后面会继续学习这个工具的使用,并继续分享学习的笔记。

相关文章

  • 1. .gitlab-ci.yaml

    这两天工作上在研究Gitlab的CI/CD,根据目前了解到的知识点来看。Gitlab的CI/CD是从一个代码仓库根...

  • 1.

    午间的太阳晒得尤其刺热,菜市场上的楼房也显得闷热无比。 保罗的余光瞄见一个老妇,老妇登着载满废食的三轮车,充满...

  • 1.

    “好了,校会到此结束,请各班有序带回,开始班会。” 正在台下打盹的白子含被后面的同学叫醒,“子含,校会结束了。”...

  • 1.

    最随和、最友好、最善解人意的人,往往是最受伤、最抑郁的人。

  • 1.

    风决定要走 云怎么挽留 情缘似流水 覆水总难收

  • 1.

    清晨的第一缕阳光有点刺痛了屠然的眼睛,星期一再不起来就要迟到的闹铃成功的惊醒她,顶着宿醉的头痛微微坐起了身,...

  • 【1.】

    赵伊萱走在路上,她回想一下今天发生的事…… - 今天看见谭柯校草了 他在向我们班的班长表白了… 班长好像答应他了...

  • 1.

    九月份开学季,可这一年的我已经不是去年那个懵懂无知的大一萌新了,因为我变成大二小学姐啦!哈哈哈哈哈哈。 按照规定新...

  • 1.

    写给我最爱的人 我们认识快三个月了,认识第一天就决定在一起。这个决定都是我们最勇敢的一次决定,所以希望我们可以一直...

  • 1.

    我问我妈,我身上的汗毛以后可不可以找整容医院把它搞掉? 我妈说,搞掉那还得了? 我就问我妈...

网友评论

      本文标题:1. .gitlab-ci.yaml

      本文链接:https://www.haomeiwen.com/subject/nkhnbltx.html