【问题标题】:Sending Azure Build Artifacts to Feed将 Azure Build Artifacts 发送到 Feed
【发布时间】:2020-07-22 03:42:13
【问题描述】:

我在将构建工件发送到我的提要时遇到问题,无法弄清楚我的问题出在哪里。

我从 Azure 文档中分叉了这个存储库,因为我是新手并学习创建 CI/CD 管道 (https://github.com/Azure-Samples/python-docs-hello-world)。

通过 twine 或通用包发布设置指南,有一些步骤可以连接到提要,例如在您的主目录中创建一个 .piyrc 文件,但这是在本地完成还是在管道 YAML 中的某个地方完成?

通用发布 YAML

steps:
- task: UniversalPackages@0
  displayName: 'Universal publish'
  inputs:
    command: publish
    vstsFeed: 'cd75ead1-7beb-42f9-9477-e958501bb986'
    publishDirectory: '$(Pipeline.Workspace)'
    vstsFeedPublish: 'cd75ead1-7beb-42f9-9477-e958501bb986'
    vstsFeedPackagePublish: drop

缠绕法

twine upload -r {Feed} --config-file $(PYPIRC_PATH) $(Pipeline.Workspace)

在使用 Universal Publishing 时,我收到一条关于提供的路径无效的错误。

使用 Twine 时,我收到有关 InvalidDistribution 的错误:找不到文件(或展开模式)

我在上面编写的 $(Pipeline.Workspace) 是作为构建管道中的路径创建的,用于从存档步骤复制所有文件。我看到在构建管道中制作了工件,然后在发布管道的第一步下载了,所以我不确定发生了什么,或者它是否像使用错误路径一样简单。

【问题讨论】:

  • 嗨@ubiquitinoob44。这张票有更新吗?您可以检查答案是否可以为您提供帮助。如果您有任何问题,请随时告诉我。只是提醒this
  • @KevinLu-MSFT 嗨,抱歉刚刚开始检查这个。我尝试过,但它在 python 脚本上失败,说明“python:无法打开文件 'setup.py':[Errno 2] 没有这样的文件或目录”也 Bash 退出,代码为 '2'
  • 别担心,这是因为你的 repo 中没有 setup.py 文件。你可以试试this sample repo :)
  • @KevinLu-MSFT 非常感谢新存储库的工作,我现在在我的 Artifact Feed 中看到了一个包。另外一件事是我最初有一个“用户缺少权限错误。您需要 AddPackage”要解决此问题,请单击 Artifacts > Select feed in drop down > Feed settings icon on the right > Permissions > 3 Ellipses on the right > Allow project scoped构建。
  • @KevinLu-MSFT 那么主要问题是原始仓库没有 setup.py 文件吗?我可以添加它只是为了看看它是否适用于回购?

标签: azure azure-devops azure-pipelines


【解决方案1】:

使用 Twine 我收到有关 InvalidDistribution 的错误:找不到文件(或展开模式)

您需要指定具体的工件路径,而不是使用$(Pipeline.Workspace)

$(pipeline.workspcae) 等于 $(Agent.BuildDirectory)。你可以参考this doc

从 Github 链接看来,你想发布一个 python 包来供稿。

您可以参考以下步骤创建 CI\CD。

在 CI 中,您可以 Build sdist 并将工件发布到管道。

示例如下:

steps:
- task: UsePythonVersion@0
  displayName: 'Use Python 3.6'
  inputs:
    versionSpec: 3.6

- script: 'python setup.py sdist'
  displayName: 'Build sdist'

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: dist'
  inputs:
    PathtoPublish: dist
    ArtifactName: dist

在 CD 中,您可以将构建工件设置为资源,并使用 twine 将 python 包上传到 feed。

这是一个例子:

twine upload -r AzureTest23  --config-file $(PYPIRC_PATH) D:\a\r1\a\{Source alias}\dist\*

twine authenticate 任务可以提供$(PYPIRC_PATH) 变量。

如果你想确定你的正确路径,可以在发布日志中找到。

注意:如果路径中有空格或特殊字符,需要在cmd中转义,否则无法识别。

名称与source alias 相关,您可以在工件源中更改它。

顺便说一句,如果你使用Universal Publish任务,你还需要给出正确的路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 2019-11-08
    • 1970-01-01
    • 2020-01-30
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多