我们目前有三个独立的appveyor项目,一个用于我们存储库中的每个分支。
我们的问题如下: Appveyor忽略了我在github分支上的过滤器。每当我们提交master,stage或dev时,它都建立在所有三个项目上而不是我们确实提交的单个项目上。
每个分支都有一个独特的appveyor.yml文件,如下所示:
这是dev
的appveyor.ymlversion: 0.0.{build}
branches:
only:
- dev
image: Visual Studio 2017
configuration: dev
before_build:
- nuget restore
build:
project: Core.Api.sln
publish_wap: true
verbosity: minimal
build_script:
- ps: .\build.ps1
after_build:
- cmd: dotnet publish src\Core.Api --output %appveyor_build_folder%\dist
test: off
artifacts:
- path: dist
name: dist.web
deploy:
...
当我们进行提交时,它建立在所有项目之上。有什么想法??
答案 0 :(得分:3)
这是因为每个项目都在GitHub上配置了Webhook,每次有人进行提交时,每个项目构建都由webhook触发。然后,无论为项目配置了什么分支(这只是手动/ API构建的默认分支),AppVeyor都会从提交完成的分支读取appveyor.yml
。
解决方案是使用alternative YAML file names或alternative YAML file location。
使用备用YAML文件名,您可以使用appveyor-dev.yml
,appveyor-stage.yml
文件,并设置特定的AppVeyor项目以使用特定文件。使用替代YAML文件位置它基本相同,但在repo以外的其他位置。我个人更喜欢替代YAML文件位置,因为重复性较低且可能出现合并问题。
在两个案例中,当分支dev
中的webhook进入stage
项目时,它仍然会读取appveyor-dev.yml
并进行正确的过滤。