【问题标题】:How to set a dynamic gitlab job tag with a variable?如何使用变量设置动态 gitlab 作业标签?
【发布时间】:2021-04-27 05:57:34
【问题描述】:

我正在尝试创建一个动态作业,该作业可以根据给定的标签在两个 gitlab 运行器之间切换。我想用一个环境变量来做这件事,但似乎这不能用。以下工作:

runner_test:
  image: alpine
  tags:
    - $MY_RUNNER
  stage: deploy_main
  script:
    - echo foobar
  retry: 2

导致管道暂停并出现错误:This job is stuck because you don't have any active runners online or available with any of these tags assigned to them: $MY_RUNNER

【问题讨论】:

    标签: gitlab gitlab-ci


    【解决方案1】:

    目前不可用。目前有一个未解决的问题在请求此功能的待办事项中:https://gitlab.com/gitlab-org/gitlab-runner/-/issues/1809


    或许可以使用rulesextends 解决:

    .template:
      stage: deploy_main
      script:
        - echo foobar
    
    runner_test_1:
      extends: .template
      tags:
        - runner_1
      rules:
        - if: $RUNNER_TAG == runner_1
        
    runner_test_2:
      extends: .template
      tags:
        - runner_2
      rules:
        - if: $RUNNER_TAG == runner_2
    

    或类似的东西。

    【讨论】:

    • 不幸的是,动态标签还不是一项功能。是的,我最终使用 only/except 做了类似的事情,以允许动态工作选择。 docs.gitlab.com/ee/ci/yaml/#onlyexcept-advanced
    • 有人对此有更新 - 似乎是不久前,问题已关闭,但没有提到任何适当的解决方案?
    • @Iony 我已经更新了问题的链接,据说这个月会发布。
    • 大家好,关于这个问题的任何更新。看来我们也因此而陷入困境。
    • 14.4 中有一个名为“嵌套变量扩展”的新功能,它可以为动态运行器标签提供您想要的内容。见文档docs.gitlab.com/ee/ci/variables/…
    【解决方案2】:

    由于这在较旧版本的 Gitlab 上是不可能的,因此作为较旧版本的 Gitlab 的解决方法,如果您希望运行特定于环境的运行器,则可以扩展 Rekovni 给出的答案:

    .Deploy_template:
      stage: Deploy
      image:
        name: busybox/busybox:latest
        entrypoint: [""]
      rules:
        - when: manual
      before_script:
        - echo "Preflight tests"
      script:
        - echo "Start Deployment"
      after_script:
        - echo "Postflight tests"
      allow_failure: false
    
    
    Deploy_feature:
      extends: .Deploy_template
      tags:
        - docker
        - feature
      rules:
        - if: $BRANCH =~ /feature/
    
    Deploy_develop:
      extends: .Deploy_template
      tags:
        - docker
        - develop
      rules:
        - if: $BRANCH =~ /develop/
    
    Deploy_stable:
      extends: .Deploy_template
      tags:
        - docker
        - stable
      rules:
        - if: $BRANCH =~ /stable/
    

    然后,您只需为您拥有的每项工作重复此操作即可。

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 2017-04-08
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 2019-05-23
      相关资源
      最近更新 更多