ื”ื’ื“ืจืช ืื™ืžื•ืช ืœืžืื’ืจื™ ื—ื‘ื™ืœื•ืช Python ื‘-Artifact Registry

ื›ืฉืžืฉืชืžืฉื™ื ื‘ืืคืœื™ืงืฆื™ื™ืช ืฆื“ ืฉืœื™ืฉื™ ื›ื“ื™ ืœื”ืชื—ื‘ืจ ืœืžืื’ืจ, ืฆืจื™ืš ืœื‘ืฆืข ืื™ืžื•ืช ืœ-Artifact Registry.

ืœื ืฆืจื™ืš ืœื”ื’ื“ื™ืจ ืื™ืžื•ืช ืœ-Cloud Build ืื• ืœืกื‘ื™ื‘ื•ืช ื–ืžืŸ ืจื™ืฆื” ืฉืœ Google Cloud, ื›ืžื• Google Kubernetes Engine ื•-Cloud Run, ืื‘ืœ ืฆืจื™ืš ืœื•ื•ื“ื ืฉืžื•ื’ื“ืจื•ืช ื”ื”ืจืฉืื•ืช ื”ื ื“ืจืฉื•ืช.

ื‘-Artifact Registry ื™ืฉ ืชืžื™ื›ื” ื‘ืฉื™ื˜ื•ืช ื”ืื™ืžื•ืช ื”ื‘ืื•ืช ืœืžืื’ืจื™ ื—ื‘ื™ืœื•ืช Python:

  • ืืกื™ืžื•ื ื™ ื’ื™ืฉื”: ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืืกื™ืžื•ื ื™ ื’ื™ืฉื” ื‘ืื•ื˜ื•ืžืฆื™ื”, ื‘ืฆื™ื ื•ืจื•ืช ืขื™ื‘ื•ื“ ื ืชื•ื ื™ื ืฉืœ CI/CD, ื‘ื‘ื ื™ื™ืช ืงื•ื ื˜ื™ื™ื ืจื™ื ืื• ื‘ืกื‘ื™ื‘ื•ืช ืฉื‘ื”ืŸ ืื™ ืืคืฉืจ ืœื”ืชืงื™ืŸ ืืช ืกืคืจื™ื™ืช ืžื—ื–ื™ืง ื”ืžืคืชื—ื•ืช.
  • ืกืคืจื™ื™ืช ืžื—ื–ื™ืงื™ ืžืคืชื—ื•ืช ืฉืœ Python (ืžื•ืžืœืฅ ืœืคื™ืชื•ื— ืžืงื•ืžื™): ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืืคืฉืจื•ืช ื”ื–ื• ื‘ืชื—ื ื•ืช ืขื‘ื•ื“ื” ืฉืœ ืžืคืชื—ื™ื ื›ื“ื™ ืœื˜ืคืœ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื‘ืจืขื ื•ืŸ ืฉืœ ืคืจื˜ื™ ื”ื›ื ื™ืกื”.
  • ืื™ืžื•ืช ื‘ืืžืฆืขื•ืช ืกื™ืกืžื”: ืžืฉืชืžืฉื™ื ื‘ืืคืฉืจื•ืช ื”ื–ื• ื›ืฉื”ืืคืœื™ืงืฆื™ื” ืœื ืชื•ืžื›ืช ื‘-Application Default Credentials, ืื‘ืœ ื›ืŸ ืชื•ืžื›ืช ื‘ืื™ืžื•ืช ื‘ืืžืฆืขื•ืช ืฉื ืžืฉืชืžืฉ ื•ืกื™ืกืžื”.

ืœืคื ื™ ืฉืžืชื—ื™ืœื™ื

  1. ืื ืžืื’ืจ ื”ื™ืขื“ ืœื ืงื™ื™ื, ื™ื•ืฆืจื™ื ืžืื’ืจ ื—ื“ืฉ ืฉืœ ื—ื‘ื™ืœื•ืช Python.
  2. ืžื•ื•ื“ืื™ื ืฉ-Python 3 ืžื•ืชืงืŸ. ื”ื•ืจืื•ืช ื”ื”ืชืงื ื” ืžื•ืคื™ืขื•ืช ื‘Google Cloud ื”ื“ืจื›ื” ืœื”ื’ื“ืจืช Python.
  3. ืžื•ื•ื“ืื™ื ืฉืœื—ืฉื‘ื•ืŸ ื”ืžืฉืชืžืฉ ืื• ืœื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช ืฉื‘ื”ื ืืชื ืžืฉืชืžืฉื™ื ื™ืฉ ืืช ื”ื”ืจืฉืื•ืช ื”ื ื“ืจืฉื•ืช ืœื’ื™ืฉื” ืœืžืื’ืจ.
  4. ื”ืชืงื™ื ื• ืืช ื”-CLI ืฉืœ Google Cloud. ืื—ืจ ื›ืš, ืžืืชื—ืœื™ื ืืช ื”-CLI ืฉืœ Google Cloud ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

    gcloud init

    ืื ืืชื ืžืฉืชืžืฉื™ื ื‘ืกืคืง ื–ื”ื•ื™ื•ืช ื—ื™ืฆื•ื ื™ (IdP), ืงื•ื“ื ืืชื ืฆืจื™ื›ื™ื ืœื”ื™ื›ื ืก ืœ-CLI ืฉืœ gcloud ื‘ืืžืฆืขื•ืช ื”ืžืื’ืจ ื”ืžืื•ื—ื“ ืœื ื™ื”ื•ืœ ื–ื”ื•ื™ื•ืช.

  5. (ืื•ืคืฆื™ื•ื ืœื™) ื”ื’ื“ืจืช ื‘ืจื™ืจื•ืช ืžื—ื“ืœ ืœืคืงื•ื“ื•ืช ืฉืœ ื”-CLI ืฉืœ gcloud.

ื™ืฆื™ืจืช ื˜ื•ืงื ื™ื ืœืื™ืžื•ืช

ื›ื“ื™ ืœืืžืช ืืช ื”ื—ื‘ื™ืœื” ื‘-Artifact Registry, ืงื•ื“ื ืฆืจื™ืš ืœื™ืฆื•ืจ ืืกื™ืžื•ืŸ ืื™ืžื•ืช. ืื—ืจ ื›ืš ืชื•ื›ืœื• ืœื”ืฉืชืžืฉ ื‘ืืกื™ืžื•ืŸ ื”ื–ื” ื›ืฉืืชื ืฉื•ืœื—ื™ื ื‘ืงืฉื•ืช ืžื”ื—ื‘ื™ืœื” ืฉืœื›ื ืืœ Artifact Registry.

ืืคืฉืจ ืœื™ืฆื•ืจ ื˜ื•ืงืŸ ื’ื™ืฉื” ืžืกื•ื’ oauth2 ื‘ืืžืฆืขื•ืช Google Cloud ืื• ื˜ื•ืงืŸ ืžืกื•ื’ oauth2l ืžื—ื•ืฅ ืœ- Google Cloud.

ื˜ื•ืงื ื™ ื’ื™ืฉื” ืชืงืคื™ื ืœืžืฉืš 60 ื“ืงื•ืช. ื™ื•ืฆืจื™ื ืืกื™ืžื•ืŸ ื’ื™ืฉื” ื–ืžืŸ ืงืฆืจ ืœืคื ื™ ืฉืžืจื™ืฆื™ื ืคืงื•ื“ื•ืช ืฉืžื‘ืฆืขื•ืช ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืžืื’ืจื™ ืžื™ื“ืข. ืื ืคื’ ื”ืชื•ืงืฃ ืฉืœ ืืกื™ืžื•ืŸ ื”ื’ื™ืฉื”, ืฆืจื™ืš ืœื™ืฆื•ืจ ืืกื™ืžื•ืŸ ื’ื™ืฉื” ื—ื“ืฉ.

ื™ืฆื™ืจืช ื˜ื•ืงืŸ ื‘ืืžืฆืขื•ืช gcloud

ื›ื“ื™ ืœื™ืฆื•ืจ ืืกื™ืžื•ืŸ ื’ื™ืฉื” ืฉืœ oauth2 ื‘ืืžืฆืขื•ืช Google Cloud, ืžืจื™ืฆื™ื ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"

ืขื›ืฉื™ื• ืืคืฉืจ ืœื”ืคื ื•ืช ืืœ ACCESS_TOKEN ื›ืฉืฉื•ืœื—ื™ื ื‘ืงืฉื•ืช ืžื—ื‘ื™ืœืช Python ืืœ Artifact Registry.

ื™ืฆื™ืจืช ื˜ื•ืงืŸ ื‘ืœื™ ืœื”ืฉืชืžืฉ ื‘-gcloud

ื›ื“ื™ ืœื™ืฆื•ืจ ืืกื™ืžื•ืŸ ื’ื™ืฉื” ื‘ืืžืฆืขื•ืช ื”-CLI ืฉืœ oauth2l ื‘ืœื‘ื“:

  1. ืžืชืงื™ื ื™ื ืืช ื”ื’ืจืกื” ื”ืขื“ื›ื ื™ืช ืฉืœ oauth2l ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

    go install github.com/google/oauth2l@latest
    
  2. ืžืจื™ืฆื™ื ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

    export ACCESS_TOKEN="oauth2l fetch --scope cloud-platform"
    

    โ€ซGoogle Cloud ื™ื•ืฆืจ ืืกื™ืžื•ืŸ ื’ื™ื‘ื•ื‘ SHA256 ื•ืžืื—ืกืŸ ืื•ืชื• ื‘ืžืฉืชื ื” ACCESS_TOKEN. ืขื›ืฉื™ื• ืืคืฉืจ ืœื”ืคื ื•ืช ืืœ ACCESS_TOKEN ื›ืฉืฉื•ืœื—ื™ื ื‘ืงืฉื•ืช ืžื—ื‘ื™ืœืช Python ืืœ Artifact Registry.

ืื™ืžื•ืช ื‘ืืžืฆืขื•ืช pip

ืื—ืจื™ ื”ื™ื™ืฆื•ื ืฉืœ ACCESS_TOKEN, ืืคืฉืจ ืœื”ืขื‘ื™ืจ ืื•ืชื• ืืœ pip ื›ื“ื™ ืœื”ืชืงื™ืŸ ื—ื‘ื™ืœื•ืช:

pip install PACKAGE --index-url https://$ACCESS_TOKEN@LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/

ืื™ืžื•ืช ื‘ืืžืฆืขื•ืช ืžื—ื–ื™ืง ืžืคืชื—ื•ืช

ืกืคืจื™ื™ืช ืžื—ื–ื™ืงื™ ื”ืžืคืชื—ื•ืช ืฉืœ Python ืžืกืคืงืช ืœืืคืœื™ืงืฆื™ื•ืช ื“ืจืš ืœื’ืฉืช ืœืงืฆื” ื”ืขื•ืจืคื™ ืฉืœ ืžื—ื–ื™ืงื™ ื”ืžืคืชื—ื•ืช, ื›ืœื•ืžืจ ืœืžืื’ืจื™ ืคืจื˜ื™ ื›ื ื™ืกื” ืฉืœ ืžืขืจื›ืช ื”ื”ืคืขืœื” ื•ืฉืœ ืฆื“ ืฉืœื™ืฉื™. ื‘-Artifact Registry ื™ืฉ ืืช ื”ืงืฆื” ื”ืขื•ืจืคื™ ืฉืœ ืื•ืกืฃ ื”ืžืคืชื—ื•ืช keyrings.google-artifactregistry-auth, ืฉืžื˜ืคืœ ื‘ืื™ืžื•ืช ืžื•ืœ ืžืื’ืจื™ Artifact Registry.

ื”ื”ื•ืจืื•ืช ื‘ืงื˜ืข ื”ื–ื” ืžืชืืจื•ืช ืื™ืš ืœื”ื’ื“ื™ืจ ืืช pip ื›ืื™ื ื“ืงืก ื”ื—ื‘ื™ืœื•ืช ื”ื™ื—ื™ื“ ืฉ-pip ืžื—ืคืฉ ื‘ื• ื—ื‘ื™ืœื•ืช. ืžื•ืžืœืฅ ืœื”ืฉืชืžืฉ ื‘ืžืื’ืจื™ื ื•ื™ืจื˜ื•ืืœื™ื™ื ื›ื“ื™ ืœื—ืคืฉ ื—ื‘ื™ืœื•ืช ื‘ื—ื‘ื™ืœื•ืช ื”ืคืจื˜ื™ื•ืช ืฉืœื›ื ื‘-Artifact Registry ื•ื‘ื—ื‘ื™ืœื•ืช ืฆื™ื‘ื•ืจื™ื•ืช ืž-PyPI, ื‘ืžืงื•ื ืœื”ื’ื“ื™ืจ ื›ืžื” ืื™ื ื“ืงืกื™ื ืฉืœ ื—ื‘ื™ืœื•ืช ื‘ืงื•ื‘ืฅ ื”ื”ื’ื“ืจื•ืช ืฉืœ pip. ื”ื›ืœื™ pip ืœื ืžื—ืคืฉ ืื™ื ื“ืงืกื™ื ืฉืœ ื—ื‘ื™ืœื•ืช ื‘ืกื“ืจ ืžืกื•ื™ื, ื•ืœื›ืŸ ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉื”ืœืงื•ื—ื•ืช ืฉืœื›ื ื™ื•ืจื™ื“ื• ืื• ื™ืชืงื™ื ื• ื‘ื˜ืขื•ืช ื—ื‘ื™ืœื” ืฆื™ื‘ื•ืจื™ืช ืขื ืื•ืชื• ืฉื ืฉืœ ืื—ืช ืžื”ื—ื‘ื™ืœื•ืช ื”ืคืจื˜ื™ื•ืช ืฉืœื›ื. ืžืื’ืจื™ื ื•ื™ืจื˜ื•ืืœื™ื™ื ืžืืคืฉืจื™ื ืœื”ื’ื“ื™ืจ ืขื“ื™ืคื•ื™ื•ืช ืœืžืงื•ืจื•ืช ื‘ืžืขืœื” ื”ื–ืจื ื›ื“ื™ ืœืฆืžืฆื ืืช ื”ืกื™ื›ื•ืŸ ืœื‘ืœื‘ื•ืœ ื‘ื ื•ื’ืข ืœืชืœื•ืช.

ืกื“ืจ ื”ื—ื™ืคื•ืฉ ืฉืœ ืคืจื˜ื™ ื”ื›ื ื™ืกื”

ื›ืฉืžืฉืชืžืฉื™ื ื‘ืขื•ืจืฃ ืฉืœ ืžื—ื–ื™ืง ืžืคืชื—ื•ืช Artifact Registry, ืคืจื˜ื™ ื”ื›ื ื™ืกื” ืœื ืžืื•ื—ืกื ื™ื ื‘ืคืจื•ื™ืงื˜ Python. ื‘ืžืงื•ื ื–ืืช, Artifact Registry ืžื—ืคืฉ ืคืจื˜ื™ ื›ื ื™ืกื” ื‘ืกื“ืจ ื”ื‘ื:

  1. Application Default Credentialsโ€ (ADC), ืืกื˜ืจื˜ื’ื™ื” ืฉืžื—ืคืฉืช ืคืจื˜ื™ ื›ื ื™ืกื” ื‘ืกื“ืจ ื”ื‘ื:

    1. ืคืจื˜ื™ ื”ื›ื ื™ืกื” ืžื•ื’ื“ืจื™ื ื‘ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” GOOGLE_APPLICATION_CREDENTIALS.

    2. ืคืจื˜ื™ ื”ื›ื ื™ืกื” ืฉื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช ืฉืžื•ื’ื“ืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื‘-Compute Engine,โ€ Google Kubernetes Engine,โ€ Cloud Run,โ€ App Engine ืื• ื‘ืคื•ื ืงืฆื™ื•ืช ืฉืœ Cloud Run ืžืกืคืง.

  2. ืคืจื˜ื™ ื›ื ื™ืกื” ืฉืกื•ืคืงื• ืขืœ ื™ื“ื™ Google Cloud CLI, ื›ื•ืœืœ ืคืจื˜ื™ ื›ื ื™ืกื” ืฉืœ ืžืฉืชืžืฉื™ื ืžื”ืคืงื•ื“ื” gcloud auth application-default login.

ื”ืžืฉืชื ื” GOOGLE_APPLICATION_CREDENTIALS ืžืฆื™ื™ืŸ ื‘ืžืคื•ืจืฉ ืืช ื”ื—ืฉื‘ื•ืŸ ืœืื™ืžื•ืช, ื•ื›ืš ืงืœ ื™ื•ืชืจ ืœืคืชื•ืจ ื‘ืขื™ื•ืช. ืื ืœื ืžืฉืชืžืฉื™ื ื‘ืžืฉืชื ื”, ืฆืจื™ืš ืœื•ื•ื“ื ืฉืœื›ืœ ื—ืฉื‘ื•ืŸ ืฉ-ADC ืขืฉื•ื™ ืœื”ืฉืชืžืฉ ื‘ื• ื™ืฉ ืืช ื”ื”ืจืฉืื•ืช ื”ื ื“ืจืฉื•ืช. ืœื“ื•ื’ืžื”, ืœื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช ืฉืžื•ื’ื“ืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืœืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช ื‘-Compute Engine, ืœืฆืžืชื™ื ื‘-Google Kubernetes Engine ื•ืœืขื“ื›ื•ื ื™ื ื‘-Cloud Run ื™ืฉ ื’ื™ืฉืช ืงืจื™ืื” ื‘ืœื‘ื“ ืœืžืื’ืจื™ื. ืื ืืชื ืžืชื›ื•ื•ื ื™ื ืœื”ืขืœื•ืช ื ืชื•ื ื™ื ืžื”ืกื‘ื™ื‘ื•ืช ื”ืืœื” ื‘ืืžืฆืขื•ืช ื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช ืฉืžื•ื’ื“ืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืืชื ืฆืจื™ื›ื™ื ืœืฉื ื•ืช ืืช ื”ื”ืจืฉืื•ืช.

ื”ื’ื“ืจืช ืื•ืกืฃ ืžืคืชื—ื•ืช

ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืื™ืžื•ืช ื‘ืืžืฆืขื•ืช ืงืฆื” ื”ืขื•ืจืฃ ืฉืœ ืžื—ื–ื™ืง ื”ืžืคืชื—ื•ืช ืฉืœ Artifact Registry:

  1. ืžืชืงื™ื ื™ื ืืช ืกืคืจื™ื™ืช ืื•ืกืฃ ื”ืžืคืชื—ื•ืช.

    pip install keyring
    
  2. ืžืชืงื™ื ื™ื ืืช ื”ื‘ืง ืื ื“ ืฉืœ Artifact Registry.

    pip install keyrings.google-artifactregistry-auth
    
  3. ืžืฆื™ื’ื™ื ืจืฉื™ืžื” ืฉืœ ืฉืจืชื™ ืงืฆื” ืขื•ืจืคื™ื™ื ื›ื“ื™ ืœืืฉืจ ืืช ื”ื”ืชืงื ื”.

    keyring --list-backends
    

    ื”ืจืฉื™ืžื” ืฆืจื™ื›ื” ืœื›ืœื•ืœ

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority: 9)
  4. ืžืจื™ืฆื™ื ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื” ื›ื“ื™ ืœื”ื“ืคื™ืก ืืช ื”ื’ื“ืจื•ืช ื”ืžืื’ืจ ื•ืœื”ื•ืกื™ืฃ ืื•ืชืŸ ืœืคืจื•ื™ืงื˜ ื‘-Python.

    gcloud artifacts print-settings python --project=PROJECT \
        --repository=REPOSITORY \
        --location=LOCATION
    

    ืžื—ืœื™ืคื™ื ืืช ื”ืขืจื›ื™ื ื”ื‘ืื™ื:

    • โ€ซPROJECT ื”ื•ื ืžื–ื”ื” ื”ืคืจื•ื™ืงื˜. ืื ืœื ืžืฆื™ื™ื ื™ื ืืช ื”ื“ื’ืœ ื”ื–ื”, ื”ืžืขืจื›ืช ืžืฉืชืžืฉืช ื‘ืคืจื•ื™ืงื˜ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืื• ื‘ืคืจื•ื™ืงื˜ ื”ื ื•ื›ื—ื™.
    • โ€ซREPOSITORY ื”ื•ื ื”ืžื–ื”ื” ืฉืœ ื”ืžืื’ืจ. ืื ื”ื’ื“ืจืชื ืžืื’ืจ ื‘ืจื™ืจืช ืžื—ื“ืœ ืฉืœ Artifact Registry, ื”ืžืขืจื›ืช ืชืฉืชืžืฉ ื‘ื• ืื ืœื ืชืฆื™ื™ื ื• ืืช ื”ื“ื’ืœ ื”ื–ื” ื‘ืคืงื•ื“ื”.
    • โ€ซLOCATION ื”ื•ื ื”ืžื™ืงื•ื ื”ืื–ื•ืจื™ ืื• ื”ืžื™ืงื•ื ื‘ืžืกืคืจ ืื–ื•ืจื™ื ืฉืœ ื”ืžืื’ืจ.
  5. ืžื•ืกื™ืคื™ื ืืช ื”ื”ื’ื“ืจื•ืช ื”ื‘ืื•ืช ืœืงื•ื‘ืฅ .pypirc. ืžื™ืงื•ื ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื•ื:

    • ื‘-Linux ื•ื‘-macOS: โ€ $HOME/.pypirc
    • ื‘-Windows:โ€ %USERPROFILE%\.pypircโ€Ž
    [distutils]
    index-servers =
        PYTHON-REPO-ID
    
    [PYTHON-REPO-ID]
    repository = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/
    

    ืžื—ืœื™ืคื™ื ืืช ื”ืขืจื›ื™ื ื”ื‘ืื™ื:

    • โ€ซPYTHON-REPO-ID ื”ื•ื ืžื–ื”ื” ืฉืœ ื”ืžืื’ืจ ืฉืืคืฉืจ ืœื”ืคื ื•ืช ืืœื™ื• ื‘ืืžืฆืขื•ืช ื›ืœื™ื ื›ืžื• Twine.
    • โ€ซPROJECT ื”ื•ื ืžื–ื”ื” ื”ืคืจื•ื™ืงื˜. ืื ืœื ืžืฆื™ื™ื ื™ื ืืช ื”ื“ื’ืœ ื”ื–ื”, ื”ืžืขืจื›ืช ืžืฉืชืžืฉืช ื‘ืคืจื•ื™ืงื˜ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืื• ื‘ืคืจื•ื™ืงื˜ ื”ื ื•ื›ื—ื™.
    • โ€ซREPOSITORY ื”ื•ื ื”ืžื–ื”ื” ืฉืœ ื”ืžืื’ืจ. ืื ื”ื’ื“ืจืชื ืžืื’ืจ ื‘ืจื™ืจืช ืžื—ื“ืœ ืฉืœ Artifact Registry, ื”ืžืขืจื›ืช ืชืฉืชืžืฉ ื‘ื• ืื ืœื ืชืฆื™ื™ื ื• ืืช ื”ื“ื’ืœ ื”ื–ื” ื‘ืคืงื•ื“ื”.
    • โ€ซLOCATION ื”ื•ื ื”ืžื™ืงื•ื ื”ืื–ื•ืจื™ ืื• ื”ืžื™ืงื•ื ื‘ืžืกืคืจ ืื–ื•ืจื™ื ืฉืœ ื”ืžืื’ืจ.
  6. ืžื•ืกื™ืคื™ื ืืช ื”ืžืื’ืจ ืœืงื•ื‘ืฅ ื”ืชืฆื•ืจื” ืฉืœ pip. ืžื™ืงื•ื ื”ืงื•ื‘ืฅ ืชืœื•ื™ ื‘ืฉืืœื” ืื ืจื•ืฆื™ื ืœืขื“ื›ืŸ ืืช ื”ืงื•ื‘ืฅ ืœื›ืœ ืžืฉืชืžืฉ ืื• ืืช ื”ืงื•ื‘ืฅ ืฉืกืคืฆื™ืคื™ ืœืกื‘ื™ื‘ื” ื•ื™ืจื˜ื•ืืœื™ืช ืฉื‘ื” ืžืฉืชืžืฉื™ื.

    ืขื‘ื•ืจ ื”ืงื•ื‘ืฅ ืฉืžืฉื•ื™ืš ืœืžืฉืชืžืฉ ื‘ืžืขืจื›ืช ื”ื”ืคืขืœื”:

    • โ€ซUnix: โ€ $HOME/.config/pip/pip.conf ืื• $HOME/.pip/pip.conf
    • macOS: โ€ /Library/Application Support/pip/pip.conf ืื• $HOME/.config/pip/pip.conf
    • ื‘-Windows: โ€ %APPDATA%\pip\pip.ini ืื• %USERPROFILE%\pip\pip.ini

    ื‘ืกื‘ื™ื‘ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช:

    • ื‘-Unix ื•ื‘-macOS: โ€ $VIRTUAL_ENV/pip.conf
    • ื‘-Windows:โ€ %VIRTUAL_ENV%\pip.iniโ€Ž

    ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืืช pip ื›ืš ืฉื™ื—ืคืฉ ืจืง ื‘ืžืื’ืจ ืฉืœื›ื, ืžืฉืชืžืฉื™ื ื‘ื”ื’ื“ืจื” index-url ื•ืžื•ื•ื“ืื™ื ืฉืœื ืžื•ื’ื“ืจื™ื ืขื•ื“ ืื™ื ื“ืงืกื™ื ืฉืœ ื—ื‘ื™ืœื•ืช ืขื ื”ื”ื’ื“ืจื” extra-index-url.

    [global]
    index-url = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/
    

    ื”ืžื—ืจื•ื–ืช /simple/ ื‘ืกื•ืฃ ื”ื ืชื™ื‘ ืฉืœ ื”ืžืื’ืจ ืžืฆื™ื™ื ืช ืฉื”ืžืื’ืจ ืžื˜ืžื™ืข ืืช Python Simple Repository API.

ืขื›ืฉื™ื• ืกื‘ื™ื‘ืช Python ืžื•ื’ื“ืจืช ืœืื™ืžื•ืช ื‘ืืžืฆืขื•ืช Artifact Registry.

ืื™ืžื•ืช ืžื—ื–ื™ืง ืžืคืชื—ื•ืช ื‘ืืžืฆืขื•ืช ืคืจื˜ื™ ื›ื ื™ืกื” ืฉืœ ืžืฉืชืžืฉ

ืื—ืจื™ ื”ื’ื“ืจืช ืžื—ื–ื™ืง ื”ืžืคืชื—ื•ืช, ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื• ืขื ืคืจื˜ื™ ื”ื›ื ื™ืกื” ืฉืœ ื”ืžืฉืชืžืฉ ื‘-CLI ืฉืœ gcloud. ืฆืจื™ืš ืœื”ื™ื›ื ืก ืœ-Google Cloud CLI ืœืคื ื™ ืฉืžืชื—ื‘ืจื™ื ืœืžืื’ืจ ื—ื‘ื™ืœื•ืช Python.

ืžืจื™ืฆื™ื ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

gcloud auth login

ืื™ืžื•ืช ืžื—ื–ื™ืง ืžืคืชื—ื•ืช ื‘ืืžืฆืขื•ืช ืคืจื˜ื™ ื›ื ื™ืกื” ืœื—ืฉื‘ื•ืŸ ืฉื™ืจื•ืช

ืื—ืจื™ ืฉืžื’ื“ื™ืจื™ื ืื•ืกืฃ ืžืคืชื—ื•ืช, ืืคืฉืจ ืœื”ื’ื“ื™ืจ ื—ืฉื‘ื•ืŸ ืฉื™ืจื•ืช ืœืื™ืžื•ืช.

  1. ื™ื•ืฆืจื™ื ื—ืฉื‘ื•ืŸ ืฉื™ืจื•ืช ืื• ื‘ื•ื—ืจื™ื ื—ืฉื‘ื•ืŸ ืฉื™ืจื•ืช ืงื™ื™ื ืฉืžืฉืžืฉ ืœืื•ื˜ื•ืžืฆื™ื”.
  2. ืžืงืฆื™ื ืœื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช ืืช ื”ืชืคืงื™ื“ ื”ืกืคืฆื™ืคื™ ื‘-Artifact Registry ื›ื“ื™ ืœืชืช ื’ื™ืฉื” ืœืžืื’ืจ.
  3. ื›ื“ื™ ืœื‘ืฆืข ืื™ืžื•ืช ื‘ืืžืฆืขื•ืช ื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช, ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืื—ืช ืžื”ืืคืฉืจื•ื™ื•ืช ื”ื‘ืื•ืช:

    • Application Default Credentials (ืžื•ืžืœืฅ)

      ืžืงืฆื™ื ืืช ื”ืžื™ืงื•ื ืฉืœ ืงื•ื‘ืฅ ื”ืžืคืชื— ืฉืœ ื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช ืœืžืฉืชื ื” GOOGLE_APPLICATION_CREDENTIALS ื›ื“ื™ ืฉืขื•ื–ืจ ื”ืื™ืฉื•ืจื™ื ืฉืœ Artifact Registry ื™ื•ื›ืœ ืœืงื‘ืœ ืืช ื”ืžืคืชื— ื›ืฉืžืชื—ื‘ืจื™ื ืœืžืื’ืจื™ื.

      export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
      
    • ืคืจื˜ื™ ื›ื ื™ืกื” ืœ-CLI ืฉืœ gcloud

      ืœืคื ื™ ืฉืžืชื—ื‘ืจื™ื ืœืžืื’ืจ, ืฆืจื™ืš ืœื”ื™ื›ื ืก ืœื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช. ืืœ ืชืฉืชืžืฉื• ื‘ืืคืฉืจื•ืช ื”ื–ื• ืื ืืชื ืžืชื—ื‘ืจื™ื ืœืžืื’ืจื™ื ืžืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช ืฉืœ Compute Engine, ื›ื™ Artifact Registry ืžื•ืฆื ืืช ืคืจื˜ื™ ื”ื›ื ื™ืกื” ืœื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช ืฉืœ ื”ืžื›ื•ื ื” ื”ื•ื•ื™ืจื˜ื•ืืœื™ืช ืœืคื ื™ ืคืจื˜ื™ ื”ื›ื ื™ืกื” ื‘-CLI ืฉืœ gcloud.

      gcloud auth activate-service-account --key-file=KEY-FILE
      

    ืžื—ืœื™ืคื™ื ืืช KEY-FILE ื‘ื ืชื™ื‘ ืฉืœ ืงื•ื‘ืฅ ื”ืžืคืชื— ืฉืœ ื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช.

ื”ื’ื“ืจืช ืื™ืžื•ืช ื‘ืืžืฆืขื•ืช ืกื™ืกืžื” ืขื ืžืคืชื—ื•ืช ืฉืœ ื—ืฉื‘ื•ืŸ ืฉื™ืจื•ืช

ื”ืฉืชืžืฉื• ื‘ื’ื™ืฉื” ื”ื–ื• ื›ืฉืืชื ืฆืจื™ื›ื™ื ืื™ืžื•ืช ื‘ืืžืฆืขื•ืช ืฉื ืžืฉืชืžืฉ ื•ืกื™ืกืžื”.

ืžืคืชื—ื•ืช ืฉืœ ื—ืฉื‘ื•ื ื•ืช ืฉื™ืจื•ืช ื”ื ืคืจื˜ื™ ื›ื ื™ืกื” ืœื˜ื•ื•ื— ืืจื•ืš. ื›ื“ื™ ืœื”ื’ื‘ื™ืœ ืืช ื”ื’ื™ืฉื” ืœืžืื’ืจื™ ื”ืงื•ื“, ืื ื—ื ื• ืžืžืœื™ืฆื™ื:

  • ืžื•ืžืœืฅ ืœื”ืฉืชืžืฉ ื‘ื—ืฉื‘ื•ืŸ ืฉื™ืจื•ืช ื™ื™ืขื•ื“ื™ ืœืื™ื ื˜ืจืืงืฆื™ื” ืขื ืžืื’ืจื™ ืžื™ื“ืข.
  • ืžืขื ื™ืงื™ื ืืช ื”ืชืคืงื™ื“ ื‘-Artifact Registry ืขื ื”ื”ืจืฉืื•ืช ื”ืžื™ื ื™ืžืœื™ื•ืช ืฉื ื“ืจืฉื•ืช ืœื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช. ืœื“ื•ื’ืžื”, ื”ืงืฆื• ืืช ื”ืชืคืงื™ื“ "ืงืจื™ืื” ื‘-Artifact Registry" ืœื—ืฉื‘ื•ืŸ ืฉื™ืจื•ืช ืฉืžื•ืจื™ื“ ืคืจื™ื˜ื™ ืžื™ื“ืข ืฉื ื•ืฆืจื• ื‘ืชื”ืœื™ืš ืคื™ืชื•ื— ื”ืชื•ื›ื ื” ื‘ืœื‘ื“.
  • ืื ืงื‘ื•ืฆื•ืช ื‘ืืจื’ื•ืŸ ืฉืœื›ื ืฆืจื™ื›ื•ืช ืจืžื•ืช ื’ื™ืฉื” ืฉื•ื ื•ืช ืœืžืื’ืจื™ ืžื™ื“ืข ืกืคืฆื™ืคื™ื™ื, ื›ื“ืื™ ืœื”ืขื ื™ืง ื’ื™ืฉื” ื‘ืจืžืช ืžืื’ืจ ื”ืžื™ื“ืข ื•ืœื ื‘ืจืžืช ื”ืคืจื•ื™ืงื˜.
  • ืฉื™ื˜ื•ืช ืžื•ืžืœืฆื•ืช ืœื ื™ื”ื•ืœ ืคืจื˜ื™ ื›ื ื™ืกื”

ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืื™ืžื•ืช:

  1. ื™ื•ืฆืจื™ื ื—ืฉื‘ื•ืŸ ืฉื™ืจื•ืช ืฉื™ืคืขืœ ื‘ืฉื ื”ืืคืœื™ืงืฆื™ื”, ืื• ื‘ื•ื—ืจื™ื ื—ืฉื‘ื•ืŸ ืฉื™ืจื•ืช ืงื™ื™ื ืฉืžืฉืžืฉ ืœืื•ื˜ื•ืžืฆื™ื”.

    ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืื™ืžื•ืช ื‘ืืžืฆืขื•ืช Artifact Registry, ืชืฆื˜ืจื›ื• ืœื“ืขืช ืื™ืคื” ื ืžืฆื ืงื•ื‘ืฅ ื”ืžืคืชื— ืฉืœ ื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช. ื‘ื—ืฉื‘ื•ื ื•ืช ืงื™ื™ืžื™ื, ืืคืฉืจ ืœืจืื•ืช ืืช ื”ืžืคืชื—ื•ืช ื•ืœื™ืฆื•ืจ ืžืคืชื—ื•ืช ื—ื“ืฉื™ื ื‘ื“ืฃ Service Accounts.

    ืžืขื‘ืจ ืœื“ืฃ 'ื—ืฉื‘ื•ื ื•ืช ืฉื™ืจื•ืช'

  2. ืžืงืฆื™ื ืœื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช ืืช ื”ืชืคืงื™ื“ ื”ืžืชืื™ื ื‘-Artifact Registry ื›ื“ื™ ืœืกืคืง ื’ื™ืฉื” ืœืžืื’ืจ.

  3. ืžืจื™ืฆื™ื ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื” ื›ื“ื™ ืœื”ื“ืคื™ืก ืืช ื”ื’ื“ืจื•ืช ื”ืžืื’ืจ ืฉืื•ืชืŸ ืฆืจื™ืš ืœื”ื•ืกื™ืฃ ืœืคืจื•ื™ืงื˜ Python.

    gcloud artifacts print-settings python --project=PROJECT \
        --repository=REPOSITORY \
        --location=LOCATION \
        --json-key=KEY-FILE
    

    ืžื—ืœื™ืคื™ื ืืช ื”ืขืจื›ื™ื ื”ื‘ืื™ื:

    • โ€ซPROJECT ื”ื•ื ืžื–ื”ื” ื”ืคืจื•ื™ืงื˜. ืื ืœื ืžืฆื™ื™ื ื™ื ืืช ื”ื“ื’ืœ ื”ื–ื”, ื”ืžืขืจื›ืช ืžืฉืชืžืฉืช ื‘ืคืจื•ื™ืงื˜ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืื• ื‘ืคืจื•ื™ืงื˜ ื”ื ื•ื›ื—ื™.
    • โ€ซREPOSITORY ื”ื•ื ื”ืžื–ื”ื” ืฉืœ ื”ืžืื’ืจ. ืื ื”ื’ื“ืจืชื ืžืื’ืจ ื‘ืจื™ืจืช ืžื—ื“ืœ ืฉืœ Artifact Registry, ื”ืžืขืจื›ืช ืชืฉืชืžืฉ ื‘ื• ืื ืœื ืชืฆื™ื™ื ื• ืืช ื”ื“ื’ืœ ื”ื–ื” ื‘ืคืงื•ื“ื”.
    • โ€ซLOCATION ื”ื•ื ื”ืžื™ืงื•ื ื”ืื–ื•ืจื™ ืื• ื”ืžื™ืงื•ื ื‘ืžืกืคืจ ืื–ื•ืจื™ื ืฉืœ ื”ืžืื’ืจ.
    • โ€ซKEY-FILE ื”ื•ื ื”ื ืชื™ื‘ ืœืงื•ื‘ืฅ ืžืคืชื— JSON ืฉืœ ื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช.
  4. ืžื•ืกื™ืคื™ื ืืช ื”ื”ื’ื“ืจื•ืช ื”ื‘ืื•ืช ืœืงื•ื‘ืฅ .pypirc. ืžื™ืงื•ื ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ืงื•ื‘ืฅ ื”ื”ื’ื“ืจื•ืช ืฉืœ pip ืœื›ืœ ืžืฉืชืžืฉ ื”ื•ื:

    • ื‘-Linux ื•ื‘-macOS: โ€ $HOME/.pypirc
    • ื‘-Windows:โ€ %USERPROFILE%\.pypircโ€Ž
    [distutils]
    index-servers =
        PYTHON-REPO-ID
    
    [PYTHON-REPO-ID]
    repository = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/
    username: _json_key_base64
    password: KEY
    

    ืžื—ืœื™ืคื™ื ืืช ื”ืขืจื›ื™ื ื”ื‘ืื™ื:

    • โ€ซPYTHON-REPO-ID ื”ื•ื ืžื–ื”ื” ืฉืœ ื”ืžืื’ืจ ืฉืืคืฉืจ ืœื”ืคื ื•ืช ืืœื™ื• ื‘ืืžืฆืขื•ืช ื›ืœื™ื ื›ืžื• Twine.
    • โ€ซPROJECT ื”ื•ื ืžื–ื”ื” ื”ืคืจื•ื™ืงื˜. ืื ืœื ืžืฆื™ื™ื ื™ื ืืช ื”ื“ื’ืœ ื”ื–ื”, ื”ืžืขืจื›ืช ืžืฉืชืžืฉืช ื‘ืคืจื•ื™ืงื˜ ื”ื ื•ื›ื—ื™ ืื• ื‘ืคืจื•ื™ืงื˜ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ.
    • โ€ซREPOSITORY ื”ื•ื ื”ืžื–ื”ื” ืฉืœ ื”ืžืื’ืจ. ืื ื”ื’ื“ืจืชื ืžืื’ืจ ื‘ืจื™ืจืช ืžื—ื“ืœ ื‘-Artifact Registry, ื”ืžืขืจื›ืช ืชืฉืชืžืฉ ื‘ื• ืื ืœื ืชืฆื™ื™ื ื• ืืช ื”ื“ื’ืœ ื”ื–ื” ื‘ืคืงื•ื“ื”.
    • โ€ซLOCATION ื”ื•ื ื”ืžื™ืงื•ื ื”ืื–ื•ืจื™ ืื• ื”ืžื™ืงื•ื ื‘ืžืกืคืจ ืื–ื•ืจื™ื ืฉืœ ื”ืžืื’ืจ.
    • โ€ซKEY ื”ื•ื ื”ืžืคืชื— ื‘ืงื™ื“ื•ื“ Base64 ื‘ืงื•ื‘ืฅ ื”ืžืคืชื— ืฉืœ ื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช.
  5. ืžื•ืกื™ืคื™ื ืืช ื”ืžืื’ืจ ืœืงื•ื‘ืฅ ื”ืชืฆื•ืจื” ืฉืœ pip. ื”ืžื™ืงื•ื ืฉืœ ืงื•ื‘ืฅ ื”ืชืฆื•ืจื” ืฉืœ pip ืชืœื•ื™ ื‘ืฉืืœื” ืื ืจื•ืฆื™ื ืœืขื“ื›ืŸ ืืช ื”ืงื•ื‘ืฅ ืœื›ืœ ืžืฉืชืžืฉ ืื• ืืช ื”ืงื•ื‘ืฅ ื”ืกืคืฆื™ืคื™ ืœืกื‘ื™ื‘ื” ื”ื•ื•ื™ืจื˜ื•ืืœื™ืช ืฉื‘ื” ืžืฉืชืžืฉื™ื.

    ื‘ืงื•ื‘ืฅ ืฉืžืฉื•ื™ืš ืœืžืฉืชืžืฉ ื‘ืžืขืจื›ืช ื”ื”ืคืขืœื”:

    • โ€ซUnix: โ€ $HOME/.config/pip/pip.conf ืื• $HOME/.pip/pip.conf
    • macOS: โ€ /Library/Application Support/pip/pip.conf ืื• $HOME/.config/pip/pip.conf
    • ื‘-Windows: โ€ %APPDATA%\pip\pip.ini ืื• %USERPROFILE%\pip\pip.ini

    ื‘ืกื‘ื™ื‘ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช:

    • ื‘-Unix ื•ื‘-macOS: โ€ $VIRTUAL_ENV/pip.conf
    • ื‘-Windows:โ€ %VIRTUAL_ENV%\pip.iniโ€Ž

    ืžื•ืกื™ืคื™ื ืืช ื”ืฉื•ืจื” ื”ื‘ืื” ืœืงื•ื‘ืฅ ื”ืชืฆื•ืจื” ืฉืœ pip:

    [global]
    index-url = https://_json_key_base64:KEY@LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/
    
    • โ€ซKEY ื”ืžืคืชื— ื”ืคืจื˜ื™ ื‘ืงื•ื‘ืฅ ื”ืžืคืชื— ืฉืœ ื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช.
    • ื”ืžื—ืจื•ื–ืช /simple/ ื‘ืกื•ืฃ ื”ื ืชื™ื‘ ืฉืœ ื”ืžืื’ืจ ืžืฆื™ื™ื ืช ืฉื”ืžืื’ืจ ืžื˜ืžื™ืข ืืช Python Simple Repository API.

ื”ืžืืžืจื™ื ื”ื‘ืื™ื