我必须基于一些要在.gitlab-ci.yml
配置中评估的条件来运行管道。文件。基本上,我想基于条件是否成立来创建作业。以下是我当前的.gitlab-ci.yml
。
# This is a test to run multiple pipeline with sing .gitlab-ci.yml file.
# identifier stage will identify which pipeline (A or B) to run and only jobs
# of that pipeline would be executed and rest would be skipped.
# variables:
# PIPE_TYPE: "$(mkdir identifier; echo 'B' > identifier/type.txt; cat identifier/type.txt)"
# PIPE_TYPE: "B"
stages:
#- identify
- build
- test
#identify:
# stage: identify
# before_script:
# - mkdir "identifier"
# - echo "B" > identifier/type.txt
# script:
# - PIPE_TYPE=$(cat identifier/type.txt)
# - echo $PIPE_TYPE
# artifacts:
# paths:
# - identifier/type.txt
before_script:
# - mkdir "identifier"
# - echo "B" > identifier/type.txt
# - export PIPE_TYPE=$(cat identifier/type.txt)
- export PIPE_TYPE="B"
build_pipeline_A:
stage: build
only:
refs:
- master
variables:
- $PIPE_TYPE == "A"
script:
- echo $PIPE_TYPE
- echo "Building using A."
- mkdir "buildA"
- touch buildA/info.txt
artifacts:
paths:
- buildA/info.txt
build_pipeline_B:
stage: build
only:
refs:
- master
variables:
- $PIPE_TYPE == "B"
script:
- echo "Building using B."
- mkdir "buildB"
- touch buildB/info.txt
artifacts:
paths:
- buildB/info.txt
test_pipeline_A:
stage: test
script:
- echo "Testing A"
- test -f "buildA/info.txt"
only:
refs:
- master
variables:
- $PIPE_TYPE == "A"
dependencies:
- build_pipeline_A
test_pipeline_B:
stage: test
script:
- echo "Testing B"
- test -f "buildB/info.txt"
only:
refs:
- master
variables:
- $PIPE_TYPE == "B"
dependencies:
- build_pipeline_B
在这里,我有两个带有作业A
和build_pipeline_A
的管道test_pipeline_A
和另一个带有B
和build_pipeline_B
作业的test_pipeline_B
的第二个管道。
首先,我想我可以创建一个作业identify
,该作业将评估一些逻辑并编写在文件(identifier/type.txt
)作业中使用哪个管道并更新PIPE_TYPE
变量。此变量可以在only:variables
测试中的所有作业中使用,并且如果PIPE_TYPE
等于作业的管道类型,则会创建该作业,不幸的是,这没有用。
在第二次尝试中,我想到了使用全局variables
并尝试在那里计算表达式并将其设置为PIPE_TYPE
的情况。
在上一次尝试中,我使用了before_script
来评估表达式并将其设置在PIPE_TYPE
中,希望on:variables
能够选择PIPE_TYPE
的值,但是没有运气也采用这种方法。
这时我的想法耗尽了,决定发布问题。 我测试的.gitlab-ci.yaml文件,这是一个公共存储库。所以请随时戳一下。