Twine 上传到 Artifacts Feed 失败

问题描述

  1. 我有一个 python 包构建成功并尝试将 Python 包发布到 Azure Artifacts 源。我的包目录结构如下:
my_pkg
  my_pkg
    start.py
 tests
    test_start.py
.pypirc
  1. .pypirc 看起来像这样:

     [distutils]
     Index-servers =
      ddey-Feed
    
     [ddey-Feed]
     Repository = https://pkgs.dev.azure.com/project 
    
  2. 以下是我的管道:

enter image description here

  1. Artifact Feed 命令行脚本的 yaml 设置如下:

步骤:

- script: |
   pip install twine keyring artifacts-keyring
   
   echo "$(PYPIRC_PATH)"
   
   python -m twine upload -r ddey-Feed --config-file $(PYPIRC_PATH) build/*
  displayName: 'Command Line Script for Artifact Feed'
  env:
    PYPIRC_PATH: $(Build.ArtifactStagingDirectory)

问题陈述: 尽管我将变量 PYPIRC_PATH 设置为指向 $(Build.ArtifactStagingDirectory),但当我打印它时显示的是 "D:\a\_temp\twineAuthenticate\MXAJzL\.pypirc"。执行此命令会导致以下错误

HTTPError:403 Forbidden from https://pkgs.dev.azure.com/

对于如何在 yaml 中为 windows 设置 PYPIRC_PATH 有什么建议吗?

解决方法

构建范围权限问题是因为项目构建是从 Azure 管道 (Build Artifacts) 提供的,它需要对 Azure 提供不同级别的权限 - Azure Pipelines

要使用来自 Azure Pipelines 源的包,相应的构建标识必须对您的源具有权限。默认情况下,项目集合构建服务是一个贡献者。如果您已将构建更改为在项目范围内运行,则需要根据需要将项目级构建标识添加为读者或贡献者。

enter image description here