如何自动运行管道,从上下文中获取值,或手动使用默认值?

问题描述 投票:0回答:1

我有一个在创建标签时运行的 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
    .
  • 使用“Pipeline --> Run pipeline”,它应该创建 artifcat
    app-manual.zip
    .

不幸的是,我无法手动运行它(Pipelines --> Run Pipeline)因为“Pipeline被工作流规则过滤掉了。”

如何修复我的 CI?

gitlab-ci git-tag manual
1个回答
0
投票

代替

$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"
© www.soinside.com 2019 - 2024. All rights reserved.