You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitHub Actions阻止已存在版本的Python包上传至Artifactory

实现方案

该需求可以通过GitHub Actions工作流实现,只需在现有部署步骤前新增版本校验逻辑即可,具体修改如下:

修改后的完整工作流片段

- name: Configure pip conf
  env:
    PYCONF: ${{ secrets.DI_PY_PIP_CONF }}
  run: |
    mkdir -p ~/.pip
    echo "$PYCONF" > ~/.pip/pip.conf

- name: Check package version exists in Artifactory
  run: |
    # 提取当前包的名称和版本号,适配所有标准setup.py写法
    PKG_NAME=$(python setup.py --name)
    PKG_VERSION=$(python setup.py --version)
    # 尝试空运行安装对应版本,判断是否已在Artifactory存在
    if pip install --dry-run --no-deps ${PKG_NAME}==${PKG_VERSION} > /dev/null 2>&1; then
      echo "错误:版本 ${PKG_VERSION} 已在Artifactory中存在,终止发布"
      exit 1
    fi
    echo "版本 ${PKG_VERSION} 不存在,可正常发布"

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

注意事项

  • 如果pip查询受环境限制,也可以替换为调用Artifactory开放API查询指定包的版本列表,核心逻辑都是比对当前版本和远端已发布版本,命中就终止流程
  • 若需求调整为跳过发布而非失败终止,只需把exit 1替换为设置GitHub Actions输出变量,后续发布步骤判断变量值决定是否执行即可

内容的提问来源于stack exchange,提问作者qwerty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:45:00