如何避免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我已经尝试了env
和secrets
,但没有成功。您要求为push
和pull_request
事件使用一个路径,现在不可能。没有语句显示支持工作流级别的变量。你可以在paths/paths_ignore中检查。
然而,你使用push
和pull_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: