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

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

Linda Hamilton
リリース: 2024-11-27 16:09:10
オリジナル
854 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート