gpt4 book ai didi

Azure DevOps如何在发布构建管道后获取输出(放置)文件夹中的文件名

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

我正在使用 Azure DevOps 构建 python 轮。我想让它尽可能通用,以便团队中的每个人都可以使用相同的管道来构建自己的 python 轮并将它们部署在一些 databricks 工作区中。为此,我需要知道构建管道输出中的文件名是什么,以便在我的发布管道中使用它。

目前,在这种情况下,该文件是保存在构建管道输出中的 python 轮。我在管道 yaml 中使用以下代码在构建管道输出和 Azure 工件源中发布它。

- task: PublishBuildArtifacts@1
inputs:
pathToPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: dfordbx

- task: UniversalPackages@0
displayName: Publish
inputs:
command: publish
publishDirectory: $(Build.ArtifactStagingDirectory)/dist/
vstsFeedPublish: 'MyProject/py_artifacts_1732'
vstsFeedPackagePublish: $(packageBuildName)

构建管道运行结束后,dist文件夹中有一个wheel文件。我需要得到这个轮子的名称。对于我自己的代码,我当然知道名字。但是当其他人为他们的代码运行管道时,我不清楚这一点。我需要在我的发布管道中获取此名称。

换句话说,我正在我的 yaml 文件中寻找一种方法来获取以下结构中的“py_sample_package-0.6.5-py3-none-any.whl”名称:

通过选择已发布的工件:

enter image description here

获取文件:

enter image description here

突出显示的部分是我需要进入管道的部分。谢谢。

最佳答案

经典发布管道

在经典发布管道中,您引用构建工件并将其用作触发器。工件将下载到 $(System.DefaultWorkingDirectory)\$(Build.DefinitionName)

要识别工件中的 .whl 文件,请将 powershell 脚本添加到您的发布管道中,该脚本可识别该文件并使用 ##vso 创建一个新变量。记录语法...

例如:

# find the first .whl file in the artifact folder
$whlFile = Get-ChildItem `
-Filter *.whl `
-Path "$(System.DefaultWorkingDirectory)\$(Build.DefinitionName)\dfordbx" |
ForEach-Object { $_.fullname } |
Select-Object -First 1

# create a variable with the full path to the file
Write-Host "##vso[task.setvariable variable=whlFile]$whlFile"

现在您可以像任何其他定义的管道变量一样使用该变量$(whlFile)

多阶段 YAML 管道

如果您使用多阶段 YAML 管道并且需要在阶段之间使用工件,则不能假设该文件将存在于计算机上,因为每个作业可能在不同的计算机上运行。您需要在作业开始时下载工件。

variables:
- artifactName: dfordbx

stages:
- stage: build
jobs:
- job: buildJob
steps:
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: $(artifactName)
artifactType: 'pipeline'

# or use the 'publish' alias
- publish: '$(Build.ArtifactStagingDirectory)'
artifact: '$(artifactName)'


- stage: deploy
dependsOn: build
condition: success('build')
jobs:
- job: deployJob
steps:
- task: DownloadPipelineArtifact@1
inputs:
source: 'current'
artifact: $(artifactName)
path: '$(Pipeline.Workspace)/$(artifactName)'

# or use the 'download' alias
- download: current
artifact: $(artifactName)

- pwsh: |
$whlFile = Get-ChildItem -Path "$(Pipeline.Workspace)/$(artifactName)" -Filter *.whl |
ForEach-Object { $_.fullName } |
Select-Object -First 1
Write-Host "##vso[task.setvariable variable=whlFile]$whlFile"

关于Azure DevOps如何在发布构建管道后获取输出(放置)文件夹中的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71125502/

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