7、pipeline优化+调试

158 阅读1分钟

1、关键词+使用场景:

1、interruptible 取消作业

job_install:
  stage: install
  tags: 
    - test
  script:
    - npm install
  interruptible: true   #默认为false

例子🌰: 比如两次提交相隔较近,且都在runing中,会自动取消比较久的一次

注意⚠️: 要避免部署job的interruptible,防止项目的部分部署

2、release 创建一个发布(待深入了解)

参考文档: https://docs.gitlab.cn/jh/user/project/releases/#release-cli-%E5%91%BD%E4%BB%A4%E8%A1%8C

在极狐GitLab 中,发布使您可以为用户创建项目的快照,包括安装包和发行说明。您可以在任何分支上创建极狐GitLab 发布。创建发布还会创建一个 Git 标签 来标记源代码中的发布点

3、timeout 设置超时时间

使用 timeout 为特定作业配置超时。如果作业运行的时间超过超时时间,作业将失败

build:
  script: build.sh
  timeout: 3 hours 30 minutes    # 单位可为 h m s

test:
  script: rspec
  timeout: 3h 30m

4、resource_group

使用 resource_group 创建一个资源组,以确保同一项目的不同流水线之间的作业是互斥的(也就是说如果恰好触发的两次流水线,且都到了部署阶段,这时只能一个部署完成,在部署另一个)

# 第一次提交
stages:
  - intsall
  - build
  - deploy

job_deploy:
  stage: deploy
  script:
    - echo 'start deploy'
    - sleep 120.    #睡眠120s
  resource_group: prod

# 第二次提交
stages:
  - intsall
  - build
  - deploy

job_deploy:
  stage: deploy
  script:
    - echo 'start deploy 2'
    - sleep 120.    #睡眠120s
  resource_group: prod

从而可以避免久的流水线快于新的流水线,从而代码不是最新的

2、pipeline的调试

1、日志

2、Debug (终极调试)

首先需要配置runner

vim /srv/gitlab-runner/config/config.toml

docker run -d --name gitlab-runner -p 8093:8093 --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest