将数组作为输入传递给 Azure DevOps YAML 任务

cdi*_*die 8 continuous-integration yaml nuget-package azure-devops

我正在尝试配置一个 CI,它将生成 NuGet 包作为 Azure DevOps 上的工件(稍后将推送到我的 NuGet 服务器)。

为此,我在 Azure DevOps(YAML 版本)上使用了 Builds Pipelines。

我有 3 个应该构建包的项目。我正在使用NuGetCommand@2来完成这个任务:

- task: NuGetCommand@2
  inputs:
    command: pack
    packagesToPack: $(Build.SourcesDirectory)/src/HTS_MessageEngine.Communication/HTS_MessageEngine.Communication.csproj
    majorVersion: $(majorVersion)
    minorVersion: $(minorVersion)
    patchVersion: $(patchVersion)
    versioningScheme: byPrereleaseNumber
Run Code Online (Sandbox Code Playgroud)

但是,对于每个项目,我必须将这个块复制 3 次。有没有办法在 packagesToPack 参数中指定项目数组?到目前为止,每个包的版本都相同,所以我不需要三个不同的块......

注意:这3个项目都是3个NetStandard,包构建的属性直接存储在csproj中

Krz*_*tof 13

对于上面的代码,我在运行构建时遇到了此异常:

my-template.yml (Line: 1, Col: 12): Unexpected value ''
Run Code Online (Sandbox Code Playgroud)

但这对我有用:

my-template.yml (Line: 1, Col: 12): Unexpected value ''
Run Code Online (Sandbox Code Playgroud)

进而:

# my-template.yml
parameters:
- name: projects
  type: object
  default: {}
steps:
- ${{ each project in parameters.projects }}:
  - task: PublishBuildArtifacts@1
    displayName: 'Publish ${{ project }}
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)/${{ project }}.zip'
Run Code Online (Sandbox Code Playgroud)


4c7*_*b41 12

您可以使用每个功能(如果此时它完全可用):

# my-template.yml
parameters:
steps:
- ${{ each project in parameters.projects }}:
  - task: PublishBuildArtifacts@1
    displayName: 'Publish ${{ project }}
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)/${{ project }}.zip'
Run Code Online (Sandbox Code Playgroud)
# ci.yml
steps:
- template: my-template.yml
  parameters:
    projects:
    - test1
    - test2
Run Code Online (Sandbox Code Playgroud)

此功能的 Github PR:https : //github.com/Microsoft/azure-pipelines-yaml/pull/2#issuecomment-452748467

  • @cdieparameters.project在哪里定义的?我没有看到任何“项目” (2认同)