Se connecter à Cloud Build

Cette page explique comment configurer Cloud Build pour stocker les artefacts créés dans un dépôt Artifact Registry.

Avant de commencer

  1. Si le dépôt cible n'existe pas dans Artifact Registry, créez un dépôt.
  2. Si Cloud Build et votre dépôt se trouvent dans des projets différents ou si vous utilisez un compte de service spécifié par l'utilisateur pour exécuter des compilations, accordez le rôle "Rédacteur Artifact Registry" au compte de service de compilation dans le projet avec les dépôts.

    Le compte de service Cloud Build par défaut peut effectuer les actions suivantes avec un dépôt du même projet Google Cloud:

    • Importer et télécharger des artefacts
    • Créer des dépôts gcr.io dans Artifact Registry

Configurer une compilation Docker

Une fois que vous avez accordé les autorisations sur le dépôt cible, vous pouvez configurer votre build.

Pour configurer votre build:

  1. Dans le fichier de configuration de compilation, ajoutez l'étape permettant de compiler l'image et d'y ajouter un tag.

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: [ 'build', '-t', '${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}', '.' ]
    images:
    - '${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}'
    

    Cet extrait utilise des substitutions Cloud Build. Cette approche est utile si vous souhaitez utiliser le même fichier de configuration de compilation pour transférer des images vers des dépôts de différents environnements, tels que les tests, la préproduction ou la production.

    • ${_LOCATION}, ${_REPOSITORY} et ${_IMAGE} sont une substitution définie par l'utilisateur pour l'emplacement et le nom du dépôt, ainsi que pour l'image. Vous spécifiez les valeurs de ces variables au moment de la compilation.
    • $PROJECT_ID est une substitution par défaut que Cloud Build résout avec l'ID de projet Google Cloud pour la compilation.

      • Si vous exécutez la commande gcloud builds submit, Cloud Build utilise l'ID du projet actif dans la session gcloud.
      • Si vous utilisez un déclencheur de compilation, Cloud Build utilise l'ID du projet dans lequel Cloud Build est exécuté.

      Vous pouvez également utiliser un remplacement défini par l'utilisateur au lieu de $PROJECT_ID afin de spécifier un ID de projet au moment de la compilation.

  2. Lorsque vous êtes prêt à exécuter la compilation, spécifiez des valeurs pour les substitutions définies par l'utilisateur. Par exemple, cette commande remplace:

    • us-east1 pour l'emplacement du dépôt
    • my-repo pour le nom du dépôt
    • my-image pour le nom de l'image
    gcloud builds submit --config=cloudbuild.yaml \
      --substitutions=_LOCATION="us-east1",_REPOSITORY="my-repo",_IMAGE="my-image" .
    

Configurer un build Go

Une fois que vous avez accordé les autorisations sur le dépôt cible, vous pouvez configurer votre build. Les instructions suivantes décrivent la configuration de votre compilation pour importer un module Go dans un dépôt Go.

Pour configurer votre build:

  1. Pour importer un module Go dans votre dépôt Go dans votre compilation, ajoutez les étapes suivantes à votre fichier de configuration de compilation:

    steps:
    - name: gcr.io/cloud-builders/gcloud
    args:
    - 'artifacts'
    - 'go'
    - 'upload'
    - '--project=$PROJECT_ID'
    - '--location=${_LOCATION}'
    - '--repository=${_REPOSITORY}'
    - '--module-path=${_MODULE_PATH}'
    - '--version=$TAG_NAME'
    

    Le fichier de configuration de compilation inclut des substitutions Cloud Build. Cette approche est utile si vous souhaitez utiliser le même fichier de configuration de compilation pour importer des packages dans des dépôts pour différents environnements, tels que les tests, la préproduction ou la production.

    • ${_LOCATION}, ${_REPOSITORY} et ${_MODULE_PATH} sont des substitutions définies par l'utilisateur pour l'emplacement du dépôt, le nom du dépôt et le chemin d'accès au module. Vous spécifiez les valeurs de ces variables au moment de la compilation.
    • $PROJECT_ID et $TAG_NAME sont des substitutions par défaut que Cloud Build remplace par les éléments suivants:

      • Remplacement de $PROJECT_ID par l'ID de projet Google Cloud correspondant à la compilation.

        • Si vous exécutez la commande gcloud builds submit, Cloud Build utilise l'ID du projet actif dans la session gcloud.
        • Si vous utilisez un déclencheur de compilation, Cloud Build utilise l'ID du projet dans lequel Cloud Build est exécuté.

        Vous pouvez également utiliser un remplacement défini par l'utilisateur au lieu de $PROJECT_ID afin de spécifier un ID de projet au moment de la compilation.

      • $TAG_NAME est remplacé par le nom de votre balise pour respecter la convention Go d'utilisation de balises Git comme numéros de version.

  2. Pour installer le package à partir du dépôt Go, ajoutez les étapes suivantes à votre fichier de configuration de compilation dans:

    • Ajoutez un point de terminaison régional Artifact Registry dans votre emplacement de dépôt au fichier .netrc.
    • Exécutez l'outil d'aide à la connexion pour actualiser les jetons OAuth.
    • Exécutez la commande go run. Vous pouvez également la remplacer par go build pour compiler le module, go test pour exécuter des tests ou go mod tidy pour télécharger les dépendances.

    Pour l'étape de commande go, GOPROXY est défini sur le dépôt Artifact Registry qui héberge les dépendances privées. Vous pouvez ajouter le proxy public à la liste d'éléments GOPROXY séparés par une virgule si le module possède des dépendances publiques.

    steps:
    - name: golang
      entrypoint: go
      args: ['run', 'github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0', 'add-locations', '--locations=${_LOCATION}']
      env:
      # Set GOPROXY to the public proxy to pull the credential helper tool
      - 'GOPROXY=https://proxy.golang.org'
    - name: golang
      entrypoint: go
      args: ['run', 'github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0', 'refresh']
      env:
      # Set GOPROXY to the public proxy to pull the credential helper tool
      - 'GOPROXY=https://proxy.golang.org'
    - name: golang
      entrypoint: go
      args: ['run', '.']
      env:
      - 'GOPROXY=https://${_LOCATION}-go.pkg.dev/${_PROJECT_ID}/${_REPOSITORY}'
    options:
      env:
      # Disable GO sumdb checks for private modules.
      - 'GONOSUMDB=${_MODULE_PATH}'
    
  3. Lorsque vous êtes prêt à exécuter la compilation, spécifiez des valeurs pour les substitutions définies par l'utilisateur. Par exemple, cette commande remplace:

    • us-east1 pour l'emplacement du dépôt
    • my-project pour l'ID du projet
    • my-repo pour le nom du dépôt
    • example.com/greetings pour le chemin d'accès au module
    gcloud builds submit --config=cloudbuild.yaml \
      --substitutions=_LOCATION="us-east1",_PROJECT_ID="my-project",_REPOSITORY="my-repo",_MODULE_PATH="example.com/greetings" .
    

Configurer un build Java

Une fois que vous avez accordé les autorisations sur le dépôt cible, vous pouvez configurer votre build. Les instructions suivantes décrivent la configuration de votre build pour importer un package Java dans un dépôt Maven.

Pour configurer votre build:

  1. Configurez l'authentification pour Maven. Veillez à spécifier le projet cible et le dépôt appropriés dans votre fichier pom.xml.

  2. Dans votre fichier de configuration de compilation Cloud Build, ajoutez l'étape permettant d'importer le package avec Maven :

    steps:
    - name: gcr.io/cloud-builders/mvn
      args: ['deploy']
    
  3. Lorsque le fichier de configuration de compilation est prêt, démarrez la compilation à l'aide de la commande suivante:

    gcloud builds submit
    

Configurer un build Node.js

Une fois que vous avez accordé les autorisations sur le dépôt cible, vous pouvez configurer votre build. Les instructions suivantes décrivent comment configurer votre build pour importer un package Node.js dans un dépôt npm.

Pour configurer votre build:

  1. Ajoutez votre dépôt Artifact Registry au fichier .npmrc de votre projet Node.js. Le fichier se trouve dans le répertoire contenant votre fichier package.json.

    @SCOPE:registry=https://LOCATION-npm.pkg.dev/PROJECT_ID/REPOSITORY
    //LOCATION-npm.pkg.dev/PROJECT_ID/REPOSITORY:always-auth=true
    
    • SCOPE-NAME est le nom du champ d'application npm à associer au dépôt. L'utilisation de champs d'application vous permet de toujours publier et installer des packages à partir du bon dépôt.
    • PROJECT_ID correspond à votre ID de projet Google Cloud.
    • LOCATION est l'emplacement régional ou multirégional du dépôt.
    • REPOSITORY est le nom du dépôt.
  2. Ajoutez au fichier package.json de votre projet un script qui actualise le jeton d'accès pour l'authentification auprès du dépôt.

    "scripts": {
     "artifactregistry-login": "npx google-artifactregistry-auth"
    }
    
  1. Dans le fichier de configuration de compilation, ajoutez l'étape permettant d'importer le package dans le dépôt.

    steps:
    - name: gcr.io/cloud-builders/npm
      args: ['run', 'artifactregistry-login']
    - name: gcr.io/cloud-builders/npm
      args: ['publish', '${_PACKAGE}']
    

    ${_PACKAGE} est une substitution Cloud Build qui représente le répertoire de votre projet Node.js. Vous pouvez spécifier le répertoire lorsque vous exécutez la commande pour exécuter la compilation.

    Par exemple, la commande suivante importe le package à partir d'un répertoire nommé src:

    gcloud builds submit --config=cloudbuild.yaml \
        --substitutions=_PACKAGE="src" .
    

Configurer un build Python

Une fois que vous avez accordé les autorisations sur le dépôt cible, vous pouvez configurer votre build. Les instructions suivantes décrivent comment configurer votre build pour importer un package Python dans un dépôt Python et l'installer à l'aide de pip.

Pour créer et conteneuriser une application Python, puis la transférer vers un dépôt Docker, consultez la section Créer des applications Python dans la documentation de Cloud Build.

Pour configurer votre build:

  1. Dans le répertoire contenant votre fichier de configuration de compilation Cloud Build, créez un fichier nommé requirements.txt avec les dépendances suivantes:

    twine
    keyrings.google-artifactregistry-auth
    
    • Twine permet d'importer des packages dans Artifact Registry.
    • keyrings.google-artifactregistry-auth est le backend du trousseau Artifact Registry qui gère l'authentification avec Artifact Registry pour pip et Twine.
  2. Pour importer un package Python dans le dépôt Python de votre build, ajoutez les étapes suivantes à votre fichier de configuration de compilation:

    steps:
    - name: python
      entrypoint: pip
      args: ["install", "-r", "requirements.txt", "--user"]
    - name: python
      entrypoint: python
      args:
      - '-m'
      - 'twine'
      - 'upload'
      - '--repository-url'
      - 'https://${_LOCATION}-python.pkg.dev/$PROJECT_ID/${_REPOSITORY}/'
      - 'dist/*'
    

    Dans cet extrait, la première étape installe Twine et le backend de trousseau Artifact Registry. La deuxième étape importe les fichiers Python créés dans le sous-répertoire dist. Ajustez les chemins d'accès à requirements.txt et aux fichiers Python créés s'ils ne correspondent pas à l'extrait.

    Le chemin d'accès au dépôt inclut des substitutions Cloud Build. Cette approche est utile si vous souhaitez utiliser le même fichier de configuration de compilation pour importer des packages dans des dépôts pour différents environnements, tels que les tests, la préproduction ou la production.

    • ${_LOCATION} et ${_REPOSITORY} sont des substitutions définies par l'utilisateur pour l'emplacement, le nom du dépôt et le nom du package. Vous spécifiez les valeurs de ces variables au moment de la compilation.
    • $PROJECT_ID est une substitution par défaut que Cloud Build résout avec l'ID de projet Google Cloud pour la compilation.

      • Si vous exécutez la commande gcloud builds submit, Cloud Build utilise l'ID du projet actif dans la session gcloud.
      • Si vous utilisez un déclencheur de compilation, Cloud Build utilise l'ID du projet dans lequel Cloud Build est exécuté.

      Vous pouvez également utiliser un remplacement défini par l'utilisateur au lieu de $PROJECT_ID afin de spécifier un ID de projet au moment de la compilation.

  3. Pour installer le package à partir du dépôt Python, ajoutez une étape à votre fichier de configuration de compilation qui exécute la commande pip install.

      steps:
      - name: python
        entrypoint: pip
        args:
        - 'install'
        - '--index-url'
        - 'https://${_LOCATION}-python.pkg.dev/$PROJECT_ID/${_REPOSITORY}/simple/'
        - '${_PACKAGE}'
        - '--verbose'
    

    Cet extrait inclut une substitution ${_PACKAGE} supplémentaire pour le nom du package.

  4. Lorsque vous êtes prêt à exécuter la compilation, spécifiez des valeurs pour les substitutions définies par l'utilisateur. Par exemple, cette commande remplace:

    • us-east1 pour l'emplacement du dépôt
    • my-repo pour le nom du dépôt
    • my-package pour le nom du package
    gcloud builds submit --config=cloudbuild.yaml \
      --substitutions=_LOCATION="us-east1",_REPOSITORY="my-repo",_PACKAGE="my-package" .