【问题标题】:Gitlab CI - how to list directory that changes and put it in a pipeline variableGitlab CI - 如何列出更改的目录并将其放入管道变量中
【发布时间】:2022-06-22 15:05:38
【问题描述】:

是否可以自动检测包含在提交中发生更改的文件的顶级目录,并将其添加到我可以在另一个阶段使用的变量中?

假设我有一个项目:

  • 文件夹1/文件[1-3].txt
  • folder2/folder3/file4.txt

如果提交修改file1.txt,我想定义一个等于“folder1”的变量。

   variables:
   - $MYVAR == "folder1"

如果提交修改file4.txt,我想定义一个等于“folder2”的变量。

   variables:
   - $MYVAR == "folder2"

不应修改不同文件夹中的多个文件。

然后在管道的另一个阶段使用该变量:

MEP:
  stage: deploy
  script:
    - echo $MYVAR

这可能吗?

【问题讨论】:

    标签: variables gitlab continuous-integration gitlab-ci


    【解决方案1】:

    您可以使用rules:variables: 有条件地定义变量——规则可以使用rules:changes: 来确定特定文件是否已更改。

    myjob:
      variables:
        MY_VAR: "default value"
    
      rules:
        - changes:
            - folder1/file[1-3].txt
          variables:
            MY_VAR: folder1  # override MY_VAR when this rule matches
        - changes:
            - folder2/folder3/file4.txt
          variables:
            MY_VAR: folder2
    

    请记住,对于任何给定的作业/管道,只有 1 个规则匹配。

    【讨论】:

    • 哦,我不知道你可以使用这样的规则,这正是我需要的,谢谢你好心的先生:)
    猜你喜欢
    • 2022-08-11
    • 1970-01-01
    • 2018-11-23
    • 2023-01-26
    • 1970-01-01
    • 2022-01-19
    • 2021-04-17
    • 2021-12-24
    • 2018-10-03
    相关资源
    最近更新 更多