当前位置:  开发笔记 > 开发工具 > 正文

如何从AppVeyor发布beta nuget包

如何解决《如何从AppVeyor发布betanuget包》经验,为你挑选了1个好方法。

这是我试图在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 }

我该如何解决?我可以得到我想要的行为吗?



1> 小智..:

您可以使用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


我不得不稍微调整一下yml文件,但是你的答案让我在95%的路上.以下是最终文件的链接:https://gist.github.com/crmckenzie/ad79d97eb7a24ffc025a
推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有