GitLabPipeline语法stages

IT
IT
IT
335
文章
1
评论
2020年5月6日13:12:51 评论 2,209 1491字阅读4分58秒

用于定义作业可以使用的阶段,并且是全局定义的。同一阶段的作业并行运行,不同阶段按顺序执行。

stages:
  - build
  - test
  - deploy

这里定义了三个阶段,首先build阶段并行运行,然后test阶段并行运行,最后deploy阶段并行运行。deploy阶段运行成功后将提交状态标记为passed状态。如果任何一个阶段运行失败,最后提交状态为failed。

未定义stages

全局定义的stages是来自于每个job。如果job没有定义stage则默认是test阶段。如果全局未定义stages,则按顺序运行 build,test,deploy。

GitLabPipeline语法stages

如果作业中定义了其他阶段,例如”codescan”则会出现错误。原因是因为除了build test deploy阶段外的其他阶段作为.pre运行(也就是作为第一个阶段运行,需要将此作业的stage指定为.pre)。

GitLabPipeline语法stages

codescan:
  stage: .pre
  script:
    - echo "codescan"

定义stages控制stage运行顺序

一个标准的yaml文件中是需要定义stages,可以帮助我们对每个stage进行排序。

stages:
  - build
  - test
  - codescan
  - deploy

GitLabPipeline语法stages

.pre & .post

.pre始终是整个管道的第一个运行阶段,.post始终是整个管道的最后一个运行阶段。 用户定义的阶段都在两者之间运行。.pre.post的顺序无法更改。如果管道仅包含.pre.post阶段的作业,则不会创建管道。

GitLabPipeline语法stages

stage

是按JOB定义的,并且依赖于全局定义的stages 。 它允许将作业分为不同的阶段,并且同一stage作业可以并行执行(取决于特定条件 )。

unittest:
  stage: test
  script:
    - echo "run test"
    
interfacetest:
  stage: test
  script:
    - echo "run test"

GitLabPipeline语法stages

可能遇到的问题: 阶段并没有并行运行。

在这里我把这两个阶段在同一个runner运行了,所以需要修改runner每次运行的作业数量。默认是1,改为10.

GitLabPipeline语法stages

vim /etc/gitlab-runner/config.toml 更改后自动加载无需重启。

concurrent = 10

variables

定义变量,pipeline变量、job变量、Runner变量。job变量优先级最大。

综合实例

before_script:
  - echo "before-script!!"

variables:
  DOMAIN: example.com
  
stages:
  - build
  - test
  - codescan
  - deploy

build:
  before_script:
    - echo "before-script in job"
  stage: build
  script:
    - echo "mvn clean "
    - echo "mvn install"
    - echo "$DOMAIN"
  after_script:
    - echo "after script in buildjob"

unittest:
  stage: test
  script:
    - echo "run test"

deploy:
  stage: deploy
  script:
    - echo "hello deploy"
    - sleep 2;
  
codescan:
  stage: codescan
  script:
    - echo "codescan"
    - sleep 5;
 
after_script:
  - echo "after-script"
  - ech

实验效果

GitLabPipeline语法stages

可能遇到的问题: pipeline卡主,为降低复杂性目前没有学习tags,所以流水线是在共享的runner中运行的。需要设置共享的runner运行没有tag的作业。

GitLabPipeline语法stages

继续阅读
  • 我的QQ
  • QQ扫一扫
  • weinxin
  • 我的头条
  • 头条扫一扫
  • weinxin
IT
  • 本文由 发表于 2020年5月6日13:12:51
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
GitLabPipeline语法parallel GitLab-Pipeline

GitLabPipeline语法parallel

配置要并行运行的作业实例数,此值必须大于或等于2并且小于或等于50。 这将创建N个并行运行的同一作业实例. 它们从job_name 1/N到job_name N/N依次命名。 codescan: st...
GitLabPipeline语法timeout GitLab-Pipeline

GitLabPipeline语法timeout

timeout 超时 特定作业配置超时,作业级别的超时可以超过项目级别的超时,但不能超过Runner特定的超时。 build: script: build.sh timeout: 3 hours 30...
GitLabPipeline语法retry GitLab-Pipeline

GitLabPipeline语法retry

配置在失败的情况下重试作业的次数。 当作业失败并配置了retry ,将再次处理该作业,直到达到retry关键字指定的次数。如果retry设置为2,并且作业在第二次运行成功(第一次重试),则不会再次重试...