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

如何通过Bitbucket Pipeline将Python包上传至AWS CodeArtifact?

实现Bitbucket Pipeline自动上传Python包到AWS CodeArtifact

前置准备

  • 你的Python项目已包含setup.py或pyproject.toml(用于构建包)
  • 拥有AWS IAM凭证,且该凭证具备以下权限:
    • codeartifact:GetRepositoryEndpoint
    • codeartifact:PutPackageVersion
    • codeartifact:UploadPackageVersionAsset
  • 在Bitbucket仓库的Settings > Repository variables中添加以下环境变量:
    • AWS_ACCESS_KEY_ID:AWS访问密钥ID
    • AWS_SECRET_ACCESS_KEY:AWS秘密访问密钥
    • AWS_REGION:CodeArtifact所在区域(如us-east-1)
    • CODEARTIFACT_DOMAIN:你的CodeArtifact域名
    • CODEARTIFACT_DOMAIN_OWNER:域名所属的AWS账户ID(可选,若域名属于当前账户可省略)
    • CODEARTIFACT_REPO:目标CodeArtifact仓库名称

编写Bitbucket Pipeline配置

在项目根目录创建bitbucket-pipelines.yml文件,内容如下:

image: python:3.10-slim

pipelines:
  default:
    - step:
        name: Build and upload Python package to AWS CodeArtifact
        script:
          # 安装构建与依赖工具
          - pip install --upgrade pip setuptools wheel twine awscli
          # 配置AWS CodeArtifact作为pip源(若构建时需从私有仓库拉取依赖则保留)
          - aws codeartifact login --tool pip --domain $CODEARTIFACT_DOMAIN --domain-owner $CODEARTIFACT_DOMAIN_OWNER --repository $CODEARTIFACT_REPO --region $AWS_REGION
          # 构建Python包(使用pyproject.toml时替换为python -m build,需先pip install build)
          - python setup.py sdist bdist_wheel
          # 获取CodeArtifact的PyPI端点
          - export REPO_ENDPOINT=$(aws codeartifact get-repository-endpoint --domain $CODEARTIFACT_DOMAIN --domain-owner $CODEARTIFACT_DOMAIN_OWNER --repository $CODEARTIFACT_REPO --format=pypi --region $AWS_REGION --query repositoryEndpoint --output text)
          # 上传包到CodeArtifact
          - twine upload --repository-url $REPO_ENDPOINT dist/*
        artifacts:
          - dist/**

关键步骤说明

  • AWS CLI登录CodeArtifact:aws codeartifact login会自动配置pip的私有仓库访问权限,若构建无需拉取私有依赖可跳过此步。
  • 构建包:setup.py sdist bdist_wheel生成源码包和wheel包;使用pyproject.toml的项目推荐用python -m build命令。
  • 上传包:通过get-repository-endpoint动态获取仓库地址,避免硬编码URL导致的维护问题。

注意事项

  • 版本号唯一性:CodeArtifact不允许重复上传同一版本的包,建议结合Git标签、提交哈希或日期自动生成版本号。
  • 权限最小化:给IAM凭证分配仅必要的CodeArtifact操作权限,避免使用管理员权限。
  • 镜像适配:根据项目Python版本选择对应Docker镜像(如python:3.9-alpine),减少构建时间和镜像体积。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:12:52