gpt4 book ai didi

nuget - 如何从 AppVeyor 发布 beta nuget 包

转载 作者:行者123 更新时间:2023-12-03 23:15:20 25 4
gpt4 key购买 nike

这是我试图在 AppVeyor 中实现的行为

  • 构建代码(用 1.2.3.{build} 标记 AssemblyInfo)
  • 测试代码
  • 如果测试通过,则创建 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

    关于nuget - 如何从 AppVeyor 发布 beta nuget 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34273570/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com