在 Github 版本上将 x86 和 x64 工件部署到 AppVeyor

Deploy x86 and x64 artifacts to AppVeyor on Github Releases

我有一个 Visual Studio 2017 解决方案,它包含一个 C++ 项目。

我希望 AppVeyor x86x64 构建 并且 部署 [=] 上的 2 个可执行文件14=].

虽然只为一个 arch 部署似乎工作正常,但我发现我的 appveyor.yml 文件会在一个作业完成而另一个作业开始时替换可执行文件。

郑重声明,这是我的第一次部署,因此我需要一些指导。

这是关于 Github Releases https://www.appveyor.com/docs/deployment/github/

的一些信息

这是我的 appveyor.yml 文件

version: '{build}'
image: Visual Studio 2017
configuration: Release
platform:
- x86
- x64
build:
  verbosity: minimal
artifacts:
- path: Release\pathfinding.exe
  name: pathfinding-x86.exe
- path: x64\Release\pathfinding.exe
  name: pathfinding-x64.exe
deploy:
- provider: GitHub
  auth_token:
    secure: the-token-is-hidden-on-purpose
  force_update: true
  on:
    APPVEYOR_REPO_TAG: true

我想通了!

顺便说一句,这是我的存储库:https://github.com/xorz57/pathfinding

问题是我的 visual studio 构建树。 如果您使用默认的 visual studio 项目属性,即使在为 x86x64 构建时它们位于不同的目录中,可执行文件也具有完全相同的文件名,这就是为什么 appveyor 从未上传过GitHub Releases 的第二个可执行文件。所以我去了 visual studio 并打开了我的项目设置来更改构建树。

确保将配置更改为 All Configurations,将平台更改为 All Platforms。然后继续更改以下三个选项Output DirectoryIntermediate DirectoryTarget Name。在上图中,我向您展示了我是如何配置自己的项目的。当然,这不是唯一的方式,我也不建议这是组织项目的最佳方式。

关键是要为可执行文件设置不同的文件名

现在我推送了一个新标签,一切正常。

这是我更新的 appveyor.yml 文件

version: '{build}'
image: Visual Studio 2017
configuration: Release
platform:
- x86
- x64
build:
  parallel: true
  verbosity: minimal
artifacts:
- path: Build\Release\pathfinding-x86.exe
  name: pathfinding-x86.exe
- path: Build\Release\pathfinding-x64.exe
  name: pathfinding-x64.exe
deploy:
- provider: GitHub
  auth_token:
    secure: the-token-is-hidden-on-purpose
  force_update: true
  on:
    APPVEYOR_REPO_TAG: true