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

Appveyor builds for all branches instead of specified ones

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

我们的问题如下: Appveyor 忽略了我在 github 分支上的过滤器。每次我们对 master、stage 或 dev 进行提交时,它都会构建在所有三个项目上,而不是我们提交的单个项目上。

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

这是 appveyor.yml for dev

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:
...

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

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

解决方案是使用 alternative YAML file names or alternative YAML file location.

使用替代 YAML 文件名,您可以拥有类似 appveyor-dev.ymlappveyor-stage.yml 的文件,并设置特定的 AppVeyor 项目以使用特定的文件。使用 替代 YAML 文件位置 是否基本相同,但在 repo 以外的其他位置。我个人更喜欢替代 YAML 文件位置,因为重复和潜在的合并问题更少。

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