有没有办法在非交互模式下使用azure artifacts-keyring身份验证?我想在 azure func 中安装私有 py 包(工件)

问题描述 投票:0回答:4

如何避免这种交互式身份验证方式? enter image description here

python-3.x azure-functions azure-artifacts
4个回答
3
投票

使用内联 PAT 令牌将 PIP_EXTRA_INDEX_URL 参数添加到函数配置:

https://<your-feed-name>:<your-PAT-key>@pkgs.dev.azure.com/<your-organization-name>/<your-project-name>/_packaging/<your-feed-name>/pypi/simple/

https://learn.microsoft.com/en-us/azure/devops/artifacts/quickstarts/python-packages?view=azure-devops


1
投票

Github上的文档提供了一个环境变量:

ARTIFACTS_KEYRING_NONINTERACTIVE_MODE
:控制底层凭证提供者是否可以发出交互式提示。

您可以看看这是否有帮助。


0
投票

似乎没有好的方法在非交互模式下在azure函数中安装私有包。

也许您可以选择一种解决方法,将模块放在函数应用程序中,并使用相对引用来使用模块中的代码。


0
投票

Azure 工件密钥环使用 keyring 作为后端。从您的快照来看,您似乎正在天蓝色的管道中使用麻绳。

虽然可以在无头系统中使用密钥环,但它需要很多先决条件。另一种方法是在

-p
命令中指定
-u
twine upload
选项。

最小

azure-pipelines.yml

jobs:
- job: "build"
    timeoutInMinutes: 5
    pool:
      vmImage: ubuntu-latest
    steps:
      - checkout: self
      - task: UsePythonVersion@0
        inputs:
          versionSpec: "3.10"
      - script: pip install --upgrade pip && pip install . && pip install twine build keyring
      - script: python -m build
      - script: twine upload -r $(TWINE_REPOSITORY) -p $(TWINE_SECRET) -u $(TWINE_USERNAME) dist/*

您必须定义环境变量:

  • TWINE_REPOSITORY
  • TWINE_SECRET
  • TWINE_USERNAME
  • TWINE_REPOSITORY_URL

宣布 TWINE_SECRET

TWINE_USERNAME
 为秘密非常重要。您不想在管道日志中泄漏这些值。

您可以通过以下方式从 UI 声明机密:

Pipelines

 > 
Pipelines
 > 
<Your repo name>
 > 
Edit
 > 
Variables
。有关其他方法,请参阅
https://learn.microsoft.com/en-us/azure/devops/pipelines/process/set-secret-variables

© www.soinside.com 2019 - 2024. All rights reserved.