gpt4 book ai didi

Azure 开发运营 : How to retrieve a build artifact from build Azure Pipeline from a PowerShell Script in Release Pipeline?

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

我已经发布了一个构建 Artifact ,发布到 $(Build.ArtifactStagingDirectory)/drop, Artifact 名称为“some_sidebar”, Artifact 发布位置是 Azure Pipeline。

如果发布任务中只有 PowerShell Skript,我如何在发布管道中检索该 Artifact ?

这是代码特定部分:

$path = ".\_some_sidebar\drop"
#$path = $(Build.Repository.LocalPath)
$SPFolderName = "Style Library/_some_sidebar";

# Upload template list
$status = "Uploading template list to Location: " + $SPFolderName
Write-Host $status
$te = Add-PnPFile -Path $path"\some_sidebar.js" -Folder $SPFolderName -Checkout
Set-PnPFileCheckedIn -Url $te.ServerRelativeUrl

我收到以下错误:

 Uploading template list to Location: Style Library/_some_sidebar
2020-01-16T09:51:20.5062033Z Add-PnPFile : Local file was not found.
2020-01-16T09:51:20.5062546Z At D:\_work\_temp\6d682160-e8a7-4c56-ab30-7ff8c40f2958.ps1:51 char:7
2020-01-16T09:51:20.5062832Z + $te = Add-PnPFile -Path $path"\some_sidebar.js" -Folder $SPFolderName ...

我假设 azure 管道中的构建 Artifact 路径是虚拟机中的某个路径...但我不知道如何在 shell 脚本中指定该路径,或者该路径到底是什么...?

最佳答案

Azure DevOps: How to retrieve a build artifact from build Azure Pipeline from a PowerShell Script in Release Pipeline?

您的帖子中存在三个问题导致此问题。

首先,由于您选择的 Artifact 发布位置是Azure Pipeline,因此您无法设置targetPath。你可以查看文档Publish Build Artifacts task :

enter image description here

我假设您所说的应该将 pathtoPublish 设置为 $(Build.ArtifactStagingDirectory)/drop 并使用artifactName“some_sidebar”,例如:

enter image description here

但是这个pathtoPublish用于设置要发布的文件夹或文件路径,换句话说,它是 Artifact 源位置,而不是目标。

因此,我们不需要在 powershell 脚本中使用 \drop 来获取 Artifact 。

第二,MS提供了一系列Release variables这样我们就可以直接使用它们。

您可以使用System.DefaultWorkingDirectorySystem.ArtifactsDirectoryAgent.ReleaseDirectory:

enter image description here

因此,我们可以在 powershell 脚本中使用上述三个变量之一来获取 Artifact ,但该变量不是文件的完整路径,它是发布管道中 Artifact 的路径,我们需要做一个更多步骤。

第三,当您使用发布管道获取 Artifact 时,这会将 Artifact 设置为包含源别名的文件夹:

enter image description here

作为测试,我使用以下 powershell 脚本创建了一个示例:

$path = "$(System.DefaultWorkingDirectory)\<SourceAliasVlaue>\<AartifactName>"
#$path = $(Build.Repository.LocalPath)
$SPFolderName = "Style Library/_some_sidebar";

# Upload template list
$status = "Uploading template list to Location: " + $SPFolderName
Write-Host $status

Get-ChildItem -Path $path

我使用 powershell 脚本 Get-ChildItem -Path $path 列出 Artifact 中的文件:

enter image description here

现在,我可以在 powershell 任务中获取 Artifact 文件 some_sidebar.js

注意:您可以尝试使用通配符来获取 Artifact ,例如:

$te = Add-PnPFile -Path "$(System.DefaultWorkingDirectory)\**\some_sidebar.js"

希望这有帮助。

关于Azure 开发运营 : How to retrieve a build artifact from build Azure Pipeline from a PowerShell Script in Release Pipeline?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59767970/

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