下面是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也不应执行。
第二种情况很好,但第一种情况没有。请帮助我建立并运行该管道。
答案 0 :(得分:1)
如果您使用的是GitLab CI 11.4版或更高版本,则可以使用only: changes
或rules: changes
参数。基于官方文档:
将
changes
关键字与only
或except
结合使用,可以定义是否应基于Git推送事件修改的文件来创建作业。
因此,您的test1
和test2
阶段可能看起来像这样:
⋮
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
⋮