Gitlab CI管道作业

时间:2020-02-17 13:03:06

标签: gitlab-ci

下面是Gitlab CI管道代码

  - image_build
  - test1
  - test2


image_build:
  stage: image_build
  tags:
    - ddc
  script:
    - echo "image build"
  rules:
    - changes:
      - Dockerfile

test1:
  stage: test1
  tags:
    - ddc
  script:
    - echo "Test1 stage"
  rules:
    - when: on_success

test2:
  stage: test2
  tags:
    - ddc
  script:
    - echo "Test2 stage"
  rules:
     - when: on_failure

如果未对Dockerfile进行任何更改,则需要执行test1,test2阶段。同样,当Dockerfile发生更改时,相同的阶段test1,test2也不应执行。

第二种情况很好,但第一种情况没有。请帮助我建立并运行该管道。

1 个答案:

答案 0 :(得分:1)

如果您使用的是GitLab CI 11.4版或更高版本,则可以使用only: changesrules: changes参数。基于官方文档:

changes关键字与onlyexcept结合使用,可以定义是否应基于Git推送事件修改的文件来创建作业。


因此,您的test1test2阶段可能看起来像这样:

⋮

test1:
    stage: test1
    tags:
        - ddc
    script:
        - echo "Test1 stage"
    rules:
        - when: on_success
    except:
        changes:
            - Dockerfile


test2:
    stage: test2
    tags:
        - ddc
    script:
        - echo "Test2 stage"
    rules:
        - when: on_failure
    except:
        changes:
            - Dockerfile


⋮