ホームページ  >  記事  >  バックエンド開発  >  Cloud Build を使用した Python パッケージの Artifact Registry へのプッシュ

Cloud Build を使用した Python パッケージの Artifact Registry へのプッシュ

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-27 16:09:10789ブラウズ

Pushing Python Packages to Artifact Registry Using Cloud Build

Google Artifact Registry は、プライベート、安全、スケーラブルな方法で 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 権限: Cloud Build サービス アカウントに、Artifact Registry と Secret Manager にアクセスするために必要な権限があることを確認してください。

Cloud Build 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 バージョン アクセスを使用して、Secret Manager から key.json ファイルを安全に取得します。
    • ファイルを既知の場所 (/workspace/key.json) に保存します。
  3. .pypirc を構成します:

    • .pypirc ファイルを動的に生成します。このファイルは、Twine が Artifact Registry で認証されるために必要です。
    • パスワードは、base64 でエンコードされた key.json の内容です。
  4. パッケージのビルドとプッシュ:

    • 必要なツール (twine、build) をインストールします。
    • Python パッケージをビルドします (python -m build)。
    • twine アップロードを使用して、.whl ファイルを Artifact Registry にプッシュします。

ビルドのトリガー

cloudbuild.yaml ファイルを保存し、ビルドをトリガーするか、github リポジトリに接続できます:

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

重要なポイント

  • 安全なシークレット管理: シークレット (key.json) は、Google Secret Manager を使用して安全にアクセスされます。
  • 動的構成: .pypirc はビルド中に生成され、機密データがリポジトリに保存されないようにします。
  • 自動アップロード: このプロセスはパッケージのビルドとプッシュを自動化し、手動介入を減らします。

検証

ビルドが完了したら:

  1. Artifact Registry でアップロードされたパッケージを確認します。
 gcloud secrets create creds --data-file=path/to/key.json
  1. ビルド ログでエラーまたは警告がないか確認します。

以上がCloud Build を使用した Python パッケージの Artifact Registry へのプッシュの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。