在 Python 中下载 Azure Devops 工件
Download Azure Devops artifact in Python
我可以在 Python (https://github.com/microsoft/azure-devops-python-api) 中使用 Azure Rest API 来下载 URL 工件,例如
artifacts = build_client.get_artifacts(project_name, build_id)
然后我想用
之类的东西下载它们
for artifact in artifacts:
urllib.request.urlretrieve(artifact.resource.download_url, artifactDownloadPath + artifact.name)
但是,它下载的不是工件,而是 HTML 页面。同样的 link 在网络浏览器中也能正常工作。
如何像在 YAML 中那样下载工件?
我们有 API 版本 6.0 用于 python Azure DevOps Artifacts 包下载:
下面是API,这个可以用在任何UI
GET https://pkgs.dev.azure.com/{organization}/{project}/_apis/packaging/feeds/{feedId}/pypi/packages/{packageName}/versions/{packageVersion}/{fileName}/content?api-version=6.0-preview.1
您可以从 Azure Docs
查看所有 parameter
在 Windows 中,您可以使用 Powershell 通过滥用注册表 + Microsoft Edge 来执行此操作(我想如果需要,可以从 Python 调用)。
taskkill > $null /im msedge.exe /f /FI "STATUS eq RUNNING"
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}" -Value "C:\MyDownloadDirectory\"
start $artifact.resource.downloadUrl
在您的脚本中导入请求并使用 GET 类型的 API:
工件名称是您在构建管道的发布构建任务中提供的名称(默认为 drop)
然后检索内容并在本地创建文件。
resp = requests.get(api, auth=("", PAT))
with open(f"{artifact_name}.zip", "wb") as f:
f.write(resp.content)
然后您将在当前工作目录中获得已发布工件的 zip 文件。
我可以在 Python (https://github.com/microsoft/azure-devops-python-api) 中使用 Azure Rest API 来下载 URL 工件,例如
artifacts = build_client.get_artifacts(project_name, build_id)
然后我想用
之类的东西下载它们for artifact in artifacts:
urllib.request.urlretrieve(artifact.resource.download_url, artifactDownloadPath + artifact.name)
但是,它下载的不是工件,而是 HTML 页面。同样的 link 在网络浏览器中也能正常工作。
如何像在 YAML 中那样下载工件?
我们有 API 版本 6.0 用于 python Azure DevOps Artifacts 包下载:
下面是API,这个可以用在任何UI
GET https://pkgs.dev.azure.com/{organization}/{project}/_apis/packaging/feeds/{feedId}/pypi/packages/{packageName}/versions/{packageVersion}/{fileName}/content?api-version=6.0-preview.1
您可以从 Azure Docs
查看所有 parameter在 Windows 中,您可以使用 Powershell 通过滥用注册表 + Microsoft Edge 来执行此操作(我想如果需要,可以从 Python 调用)。
taskkill > $null /im msedge.exe /f /FI "STATUS eq RUNNING"
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}" -Value "C:\MyDownloadDirectory\"
start $artifact.resource.downloadUrl
在您的脚本中导入请求并使用 GET 类型的 API:
工件名称是您在构建管道的发布构建任务中提供的名称(默认为 drop)
然后检索内容并在本地创建文件。
resp = requests.get(api, auth=("", PAT))
with open(f"{artifact_name}.zip", "wb") as f:
f.write(resp.content)
然后您将在当前工作目录中获得已发布工件的 zip 文件。