这是我试图在AppVeyor中实现的行为
构建代码(用Assembly邮件标记1.2.3.{build}
)
测试代码
如果测试通过,则创建nuget包
如果包成功创建,则发布测试包(1.2.3-beta-{build}
)
还可以使用工件包.
理想情况下,在发布nuget包时,它将作为预发行版发布.在NuGet中,这是通过在包版本的末尾添加字母字符来完成的.覆盖现有包也被认为是不好的做法(实际上,许多nuget实现不允许这样做).
AppVeyor可以很好地从github构建和测试软件,但我似乎无法控制nuget软件包版本.
给定:具有下一个语义版本1.2.3的包我希望AppVeyor {version}变量等于1.2.3.{build}
我希望nuget包版本等同于1.2.3-beta-{build}
我尝试的第一件事就是在{version}
框中使用变量.显然这是不允许的.AppVeyor似乎只做变量替换,{branch}
并{build}
作为其中的一部分{version}
.这意味着我将不得不为语义版本维护一个单独的变量.
我遇到的下一个挑战是无法通过UI设置nuget包版本.它希望默认与AppVeyor构建版本相同.
我决定在测试运行后尝试使用Powershell创建包.这是有效的,但是Nuget Publish步骤想要在创建包之前运行,并且似乎没有办法控制执行顺序.
我想我走错了路.我需要一个概念性的重置.
这是我的appveyor.yml当前(不正确)状态:
version: 0.1.0.{build}
configuration: Release
assembly_info:
patch: true
file: '**\AssemblyInfo.*'
assembly_version: '{version}'
assembly_file_version: '{version}'
assembly_informational_version: '{version}'
environment:
packageVersion: 0.1.0
nuget:
account_feed: true
project_feed: true
disable_publish_on_pr: true
before_build:
- ps: nuget restore
build:
verbosity: minimal
artifacts:
- path: '*.nupkg'
name: nuget package
deploy:
- provider: NuGet
api_key:
secure: blahblahblah
artifact: '*.nupkg'
on:
branch: master
on_success:
- ps: >-
$releaseVersion= $env:packageVersion
$buildNumber = $env:APPVEYOR_BUILD_NUMBER
$betaVersion= "$releaseVersion-beta-$buildNumber"
nuget pack Odin.nuspec -version $betaVersion
Get-ChildItem .\*.nupkg | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
我该如何解决?我可以得到我想要的行为吗?
您可以使用PowerShell和AppVeyor API来控制版本号.我会尝试编写appveyor.yml
如下:
version: 0.1.0.{build}
environment:
packageVersion: 0.1.0
init:
- ps: $env:buildVersion = "$env:packageVersion.$env:appveyor_build_number"
- ps: $env:nugetVersion = "$env:packageVersion-beta-$env:appveyor_build_number"
- ps: Update-AppveyorBuild -Version $env:buildVersion
assembly_info:
patch: true
file: '**\AssemblyInfo.*'
assembly_version: '$(buildVersion)'
assembly_file_version: '$(buildVersion)'
assembly_informational_version: '$(nugetVersion)'
configuration: Release
nuget:
account_feed: true
project_feed: true
disable_publish_on_pr: true
before_build:
- nuget restore
build:
verbosity: minimal
after_build:
- nuget pack Odin.nuspec
artifacts:
- path: '*.nupkg'
deploy:
- provider: NuGet
api_key:
secure: blahblahblah
artifact: '*.nupkg'
on:
branch: master