为 post_build 操作查找 AppVeyor 构建工件的位置

Finding location of AppVeyor built artifact for post_build action

我已经让 AppVeyor 为我构建并部署了 nuget 包,但现在我正在尝试对 nuget 包做一些事情post_build

基本上,我有:

build:
  project: XmlRpcCore.sln
  parallel: true
  verbosity: minimal
  publish_nuget: true
  publish_nuget_symbols: false

以及:

deploy:
  - provider: NuGet
    name: nuget_release
    api_key:
      secure: MJz3DvmtiuNK6IVsPbxR3gWiSCnhKqm6tmPsjdRDgwGx9L2PQSSZ1eE7YS8dkZhx
    skip_symbols: true
    on:
      appveyor_repo_tag: true

依此类推,一切正常。

现在,我的问题在于在 build 步骤之后尝试在 post_build 中找到要处理的 nuget 包。它不在 APPVEYOR_BUILD_FOLDER 中。我在输出中看到:

Successfully created package 'C:\Users\appveyor\AppData\Local\Temp\py7750yjd6\XmlRpcCore.3.1.0.62.nupkg'.

但我没有看到任何环境变量来帮助我解决该路径,因此我可以在 deploy 之前在 post_build 中调用 powershell 命令,如下所示:

after_build:
 - ps: dir
 - ps: MagicCmd -InputPath "$env:<what might go here?>\XmlRpcCore.$env:TAG_VERSION.nuget"

PowerShell 会话中提供了有关生成的工件的信息:https://www.appveyor.com/docs/packaging-artifacts/#getting-information-about-uploaded-artifacts

您可以在 before_deploy 部分中使用一个简单的 PowerShell 脚本来分析该哈希并将所需的值放入环境变量,例如,以获取第一个生成的工件的路径:

before_deploy:
- ps: |
    foreach ($artifactName in $artifacts.keys) {
      $env:packagePath = $artifacts[$artifactName].path
      break
    }
- 'echo This is the path: %packagePath%'