我有一个在创建标签时运行的 CI,但我也希望能够手动运行它。不幸的是,CI 使用标签名称来设置工件的名称。
我试过这个:
stages:
- build
workflow:
rules:
- if: $CI_COMMIT_TAG
- if: $CI_JOB_MANUAL
variables:
- CI_COMMIT_TAG: "manual"
build_app:
script:
- echo "Build completed"
artifacts:
expire_in: 30 days
paths:
- .
name: "app-$CI_COMMIT_TAG"
我想要的是:
git tag v2.4.1 && git push --tags
,它应该创造神器app-v2.4.1.zip
.app-manual.zip
.不幸的是,我无法手动运行它(Pipelines --> Run Pipeline)因为“Pipeline被工作流规则过滤掉了。”
如何修复我的 CI?
代替
$CI_JOB_MANUAL
,您必须使用$CI_PIPELINE_SOURCE
并将其与"web"
进行比较。这是完整的文件:
stages:
- build
workflow:
rules:
- if: $CI_COMMIT_TAG
- if: '$CI_PIPELINE_SOURCE == "web"'
variables:
- CI_COMMIT_TAG: "manual"
build_app:
script:
- echo "Build completed"
artifacts:
expire_in: 30 days
paths:
- .
name: "app-$CI_COMMIT_TAG"