根据gitlab ci匹配的规则运行脚本



是否可以根据匹配的If条件运行脚本?只有当规则与第一个IF匹配时,我才需要运行脚本,对于第二个IF条件运行其他脚本。这可能吗?

tor:
stage: build
rules:
- if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_TAG"
changes:
- backend/exporter/**/*
when: on_success
script:
- cd backend/exporter
- echo "Merged to master"
rules:
- if: "$CI_MERGE_REQUEST_IID"
changes:
- backend/exporter/**/*
when: on_success
script:
- echo "It's a merge request"
image: docker:doo19
services:
- docker:doo19
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- echo "No conditions matched!"

您可以使用rules:variables:或仅让您的脚本评估相同类型的逻辑。

job:
rules:
- if: "Some condition"
variables:
SCRIPT_TO_RUN: "./foo.sh"
- if: "Another condition"
variables:
SCRIPT_TO_RUN: "./bar.sh"
script:
- bash $SCRIPT_TO_RUN

或者直接在脚本

中嵌入适当的逻辑
job:
script: |
if [[ "Some condition" ]]; then
./foo.sh
elif [[ "Another condition" ]]; then
./bar.sh
fi

最新更新