如何在Azure DevOps或GitHub的YAML文件中定义一个带有文件列表的变量



如何避免Azure DevOps/GitHub管道中文件列表的重复?

假设我有以下YAML文件:

name: Build
on:
push:
branches: [ master ]
paths: 
- 'SRC/define.inc'
- 'SRC/SrvMain.pas'
- 'SRC/Tiny.dpr' 
- 'SRC/xBase.pas'
pull_request:
branches: [ master ]
paths: 
- 'SRC/define.inc'
- 'SRC/SrvMain.pas'
- 'SRC/Tiny.dpr' 
- 'SRC/xBase.pas'
workflow_dispatch:
jobs:

(我将这个管道用于GitHub上的TinyWeb存储库)

正如您所看到的,paths:部分下的文件列表重复了"&;push&;"one_answers";pull_request"部分。如何只定义一次文件列表,这样就不需要将其复制到每个节,而只需添加对list变量的引用?我试图使用variables:关键字定义列表,然后将列表引用为${{ variables.my_variable_name }},但它不起作用。我试了好几种方法都没用。

请给出一个YAML文件的例子,我可以在其中定义文件列表一次,然后从on:下的多个部分使用它。

嗨@Maxim Masiutin我已经尝试了envsecrets,但没有成功。您要求为pushpull_request事件使用一个路径,现在不可能。没有语句显示支持工作流级别的变量。你可以在paths/paths_ignore中检查。

然而,你使用pushpull_request事件完全相同,我认为你可能会像下面这样使用:

name: Build
on:
push:
pull_request:
branches: [ master ]
paths: 
- 'SRC/define.inc'
- 'SRC/SrvMain.pas'
- 'SRC/Tiny.dpr' 
- 'SRC/xBase.pas'
workflow_dispatch:
jobs:

我希望这对你有用。

这种语法在Azure上对我有效。

name: Build
variables:
src_define: 'SRC/define.inc'
src_srvmain: 'SRC/SrvMain.pas'
src_tiny: 'SRC/Tiny.dpr'
src_xbase: 'SRC/xBase.pas'
on:
push:
branches: [ master ]
paths: 
- variables['src_define']
- variables['src_srvmain']
- variables['src_tiny']
- variables['src_xbase']
pull_request:
branches: [ master ]
paths: 
- variables['src_define']
- variables['src_srvmain']
- variables['src_tiny']
- variables['src_xbase']
workflow_dispatch:
jobs:

相关内容

最新更新