代码之家  ›  专栏  ›  技术社区  ›  cpoDesign

如何使用yaml配置从Azure管道生成nuget包的特定版本

  •  1
  • cpoDesign  · 技术社区  · 7 年前

    我在这里定义了一个构建配置:

    https://github.com/cpoDesign/APIFramework/blob/master/azure-pipelines.yml

    我已使用以下命令成功生成nuget包

    - task: DotNetCoreCLI@2
      inputs:
        command: pack
        projects: '**/*ApiFramework.csproj'
    

    脚本的任务输出的一个子集是

      Task "PackTask"
    2018-11-27T23:02:32.4459067Z          Successfully created package '/home/vsts/work/1/a/CPODesign.ApiFramework.1.0.0.nupkg'.
    

    下一步解决:

    我不想创建一个发布到nuget中的构建,因为这些步骤必须在逻辑上分离。因此我创建了一个新的步骤创建一个放置。

    配置:

    我的删除任务定义:

    - task: PublishBuildArtifacts@1
      inputs:
        pathtoPublish: '$(Build.ArtifactStagingDirectory)'
        artifactName: drop
        contents: '**/$(BuildConfiguration)/**/?(*.nupkg)'
    

    建立输出:

    2018-11-27T23:04:24.6351310Z ##[section]Starting: PublishBuildArtifacts
    2018-11-27T23:04:24.6353582Z ==============================================================================
    2018-11-27T23:04:24.6353896Z Task         : Publish Build Artifacts
    2018-11-27T23:04:24.6353944Z Description  : Publish build artifacts to Azure Pipelines/TFS or a file share
    2018-11-27T23:04:24.6354007Z Version      : 1.142.2
    2018-11-27T23:04:24.6354046Z Author       : Microsoft Corporation
    2018-11-27T23:04:24.6354091Z Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=708390)
    2018-11-27T23:04:24.6354156Z ==============================================================================
    2018-11-27T23:04:26.1357631Z ##[section]Async Command Start: Upload Artifact
    2018-11-27T23:04:26.1357755Z Uploading 1 files
    2018-11-27T23:04:26.6373194Z File upload succeed.
    2018-11-27T23:04:26.6373313Z Upload '/home/vsts/work/1/a' to file container: '#/1558454/drop'
    2018-11-27T23:04:27.9231805Z Associated artifact 91 with build 806
    2018-11-27T23:04:27.9231947Z ##[section]Async Command End: Upload Artifact
    2018-11-27T23:04:27.9232436Z ##[section]Finishing: PublishBuildArtifacts
    

    注: Azure DevOps的UI已更改,人工制品(工件)不再作为新选项卡创建,而是错误地添加到报告摘要中。

    问题:

    如何生成nuget包的特定版本,即:1.0.%(build.buildID)?

    我最后一次尝试是

    - task: DotNetCoreCLI@2
      inputs:
        command: pack
        projects: '**/*ApiFramework.csproj'
       # packageVersion:'1.0.$(Build.BuildId)'
    

    在哪里?

       packageVersion:'1.0.$(Build.BuildId)'
    

    将导致生成失败 (当前分支机构发布于: https://github.com/cpoDesign/APIFramework/blob/cpoDesign-build-mods-1/azure-pipelines.yml )

    2 回复  |  直到 7 年前
        1
  •  0
  •   Colin B    7 年前

    我无法将内容视为publishbuildArtifacts@1的yaml中的有效输入

    您的意思是在执行发布任务之前先执行复制任务吗?如发布文档所示? https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/publish-build-artifacts?view=vsts

        2
  •  0
  •   cpoDesign    7 年前

    经过几个小时的挫折,我找到了答案。

    1. 将生成的nuget包发布到build artefacts中
    2. 生成发布版本以发布nuget包

    生成配置

    pool:
      vmImage: 'Ubuntu 16.04'
    
    variables:
      buildConfiguration: 'Release'
    
    steps:
    - script: dotnet build --configuration $(buildConfiguration)
      displayName: 'dotnet build $(buildConfiguration)'
    
    - task: DotNetCoreCLI@2
      inputs:
        command: restore
        projects: '**/*.csproj'
    
    - script: dotnet test **/*.Tests.Unit.csproj --logger trx
    - task: PublishTestResults@2
      inputs:
        testRunner: VSTest
        testResultsFiles: '**/*.trx'
    
    - script: dotnet pack /p:PackageVersion='1.0.$(Build.BuildId)' --configuration $(buildConfiguration)  -o $(Build.ArtifactStagingDirectory)
    
    - task: PublishBuildArtifacts@1
      inputs:
        pathtoPublish: '$(Build.ArtifactStagingDirectory)'
        artifactName: drop
        contents: '**/$(BuildConfiguration)/**/?(*.nupkg)'
    

    释放段

    我已经更新了版本以在每次成功构建后触发

    dotnet nuget push artefactName.APIFramework/drop/CPODesign.ApiFramework.1.0.$(Build.BuildId).nupkg -k $(myapiKey) -s https://api.nuget.org/v3/index.json
    
    推荐文章