首页  >  文章  >  后端开发  >  使用 Cloud Build 将 Python 包推送到 ArtifactRegistry

使用 Cloud Build 将 Python 包推送到 ArtifactRegistry

Linda Hamilton
Linda Hamilton原创
2024-11-27 16:09:10788浏览

Pushing Python Packages to Artifact Registry Using Cloud Build

Google ArtifactRegistry 是一个强大的解决方案,用于以私密、安全且可扩展的方式管理和托管 Python 包工件。本指南提供了使用 Google Cloud Build 和来自 Google Secret Manager 的密钥(信用)将 Python 包 .whl 文件推送到 Artifact Registry 的分步演练,以进行身份​​验证。


先决条件

  1. 工件注册表设置

    • 在 Artifact Registry 中创建一个 Python 存储库:
     gcloud artifacts repositories create python-packages \
       --repository-format=python \
       --location=us-central1 \
       --description="Python packages repository"
    
  2. 秘密设置:

    • 将您的密钥作为秘密存储在 Google Secret Manager 中:
     gcloud secrets create creds --data-file=path/to/key.json
    
  • 授予 Cloud Build 对密钥的访问权限:(可选,也可以使用 IAM 完成)

     gcloud secrets add-iam-policy-binding creds \
       --member="serviceAccount:$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')@cloudbuild.gserviceaccount.com" \
       --role="roles/secretmanager.secretAccessor"
    
  1. 云构建权限: 确保您的 Cloud Build 服务帐户具有访问 Artifact Registry 和 Secret Manager 所需的权限。

云构建 YAML 配置

这是完整的工作 cloudbuild.yaml 文件:

options:
  machineType: E2_HIGHCPU_8
  substitutionOption: ALLOW_LOOSE
  logging: CLOUD_LOGGING_ONLY

steps:
  # Step 1: Access the secret `creds` and save it as `key.json`
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    entrypoint: bash
    args:
      - '-c'
      - |
        gcloud secrets versions access latest --secret=creds > /workspace/key.json

  # Step 2: Configure `.pypirc` with the Artifact Registry credentials
  - name: 'python'
    entrypoint: bash
    args:
      - '-c'
      - |
        cat > ~/.pypirc << EOL
        [distutils]
        index-servers = tower-common-repo

        [tower-common-repo]
        repository: https://us-central1-python.pkg.dev/$PROJECT_ID/python-packages/
        username: _json_key_base64
        password: $(base64 -w0 /workspace/key.json)
        EOL

        # Step 3: Build and upload the Python package
        pip install twine build && \
        python -m build && \
        twine upload --repository tower-common-repo dist/* --verbose

分步说明

  1. 定义构建选项:

    • 设置机器类型、替换行为和日志记录选项。
    • 这些配置可确保高效的构建和可管理的日志。
  2. 检索 key.json 秘密:

    • 使用 gcloud Secrets versions access 从 Secret Manager 安全地获取 key.json 文件。
    • 将文件保存到已知位置 (/workspace/key.json)。
  3. 配置.pypirc:

    • 动态生成 .pypirc 文件。 twine 需要此文件才能通过 Artifact Registry 进行身份验证。
    • 密码为key.json的base64编码内容。
  4. 构建并推送包:

    • 安装必要的工具(缠绕、构建)。
    • 构建 Python 包 (python -m build)。
    • 使用 twine upload 将 .whl 文件推送到 Artifact Registry。

触发构建

保存cloudbuild.yaml文件并触发构建或者可以连接到github存储库:

 gcloud artifacts repositories create python-packages \
   --repository-format=python \
   --location=us-central1 \
   --description="Python packages repository"

要点

  • 安全机密管理:使用 Google Secret Manager 安全地访问机密 (key.json)。
  • 动态配置:.pypirc 在构建过程中生成,确保存储库中不存储敏感数据。
  • 自动上传:该过程自动进行包构建和推送,减少人工干预。

验证

构建完成后:

  1. 在ArtifactRegistry中验证上传的包:
 gcloud secrets create creds --data-file=path/to/key.json
  1. 检查构建日志中的错误或警告。

以上是使用 Cloud Build 将 Python 包推送到 ArtifactRegistry的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn