Appveyor为所有分支而不是指定分支构建

时间:2017-08-15 13:44:04

标签: continuous-integration continuous-deployment appveyor

我们目前有三个独立的appveyor项目,一个用于我们存储库中的每个分支。

我们的问题如下: Appveyor忽略了我在github分支上的过滤器。每当我们提交master,stage或dev时,它都建立在所有三个项目上而不是我们确实提交的单个项目上。

每个分支都有一个独特的appveyor.yml文件,如下所示:

这是dev

的appveyor.yml
version: 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:
...

当我们进行提交时,它建立在所有项目之上。有什么想法??

enter image description here

1 个答案:

答案 0 :(得分:3)

这是因为每个项目都在GitHub上配置了Webhook,每次有人进行提交时,每个项目构建都由webhook触发。然后,无论为项目配置了什么分支(这只是手动/ API构建的默认分支),AppVeyor都会从提交完成的分支读取appveyor.yml

解决方案是使用alternative YAML file namesalternative YAML file location

使用备用YAML文件名,您可以使用appveyor-dev.ymlappveyor-stage.yml文件,并设置特定的AppVeyor项目以使用特定文件。使用替代YAML文件位置它基本相同,但在repo以外的其他位置。我个人更喜欢替代YAML文件位置,因为重复性较低且可能出现合并问题。

在两个案例中,当分支dev中的webhook进入stage项目时,它仍然会读取appveyor-dev.yml并进行正确的过滤。