如果版本已存在,则无法将 python 包上传到 artifactory

Fail uploading python package to artifactory if version already exists

我有一个 Github 包的 python 存储库,只要对 main 进行了更改,github-actions 就会将包推送到 artifactory。我想在 github-actions 中添加一些东西,如果版本号已经存在,则不会将包发布到 artifactory。

github 操作代码如下所示:

      - name: Deploying Package
    env:
      PYRC: ${{ secrets.DI_PYPIRC }}
      PYCONF: ${{ secrets.DI_PY_PIP_CONF }}
    run: |
      echo "$PYRC" >> ~/.pypirc
      ls -a
      python setup.py sdist bdist_wheel upload -r local
    

PYRC 和 PYCONF 是构建用于上传到 artifactory 的 .pypirc 和 pip.conf 文件的秘密,pip.conf 用于将 pip 安装指向存储库以从中提取包。

如果 setup.py 的版本已在 artifactory 中可用,则尝试在此处添加一些会导致构建失败的内容。是否可以通过 github 工作流程来完成?

有两种方法可以做到这一点:

  1. 配置用于上传到 的 Artifactory 帐户没有 delete/overwrite 权限(您可以在此处阅读有关权限如何工作的更多信息:Artifactory Docs - Permissions.

    然后在您的 GitHub 操作中,它会在尝试上传时收到错误,这符合您的要求。

    如果有兴趣,您可以进一步研究 Artifactory Docs - Access Tokens 作为一种方法,您可以在其中为特定存储库创建具有特定权限的令牌。

  2. 编写一个脚本,通过 Artifactory API 检查该版本是否存在,如果不存在,则上传。您可以使用此端点 Artifactory API Docs - File Info 来获取此信息。

    如果您没有能力执行上述操作,我只会采用这种方法,因为上述方法就是 simpler/better 方法。

告诉我们你的进展!