代码之家  ›  专栏  ›  技术社区  ›  malat

为每个并行矩阵作业选择不同的流道标记

  •  0
  • malat  · 技术社区  · 2 年前

    The documentation 文档非常清楚如何基于 仅有一个的 标记值。然而,当共享跑步者需要两个或多个标签时,文档就不那么清晰了。

    以下是我在设置中所做的工作(公司GitLab实例):

    variables:
      GIT_STRATEGY: none
    
    .build-matrix:
      parallel:
        matrix:
        - IMAGE: "mcr.microsoft.com/windows/servercore:ltsc2022"
          TAG1: "windows2022"
          TAG2: "docker"
          TAG3: "docker" # cannot be empty string, hack: duplicate previous one
        - IMAGE: "mcr.microsoft.com/dotnet/sdk:7.0"
          TAG1: "linux"
          TAG2: "dind"
          TAG3: "docker"
    
    build:
      extends: .build-matrix
      stage: build
      tags:
        - $TAG1
        - $TAG2
        - $TAG3
      image: $IMAGE
      script:
        - echo "hello world"
        - pwd
    

    正如您在上面看到的,我不能在 parallel 部分因此,我需要手动扩展数组,并使用技巧将每个单独的标记传递到构建阶段。

    我是不是错过了文档中的内容,或者有其他方法可以根据 两个或更多 标签?

    0 回复  |  直到 2 年前
        1
  •  1
  •   sytech    2 年前

    您所拥有的是有效的,如果使用多个标签,则需要为每个排列使用相同数量的标签,正如您所描述的那样。您也可以使用 rules:variables: 有这样的情况 if: $IMAGE == "..." 同样的效果,但变化不大。

    如果您想使您的配置最少地冗长,您应该在您的runner上创建唯一的标记,这样就可以只使用一个标记来引用它们,例如 docker-dind-linux docker-windows

    .build-matrix:
      parallel:
        matrix:
        - IMAGE: "mcr.microsoft.com/windows/servercore:ltsc2022"
          TAG: "docker-windows"
        - IMAGE: "mcr.microsoft.com/dotnet/sdk:7.0"
          TAG: "docker-dind-linux"
      tags:
        - $TAG