Configurer des comptes de service spécifiés par l'utilisateur

Cette page explique comment configurer des comptes de service spécifiés par l'utilisateur pour les compilations.

Par défaut, Cloud Build utilise un compte de service spécial pour exécuter des compilations en votre nom. Ce compte de service est appelé compte de service Cloud Build et est créé automatiquement lorsque vous activez l'API Cloud Build dans un projet Google Cloud. Ce compte de service dispose d'un certain nombre d'autorisations par défaut, telles que la possibilité de mettre à jour des compilations ou d'écrire des journaux.

Au lieu d'utiliser le compte de service Cloud Build par défaut, vous pouvez spécifier votre propre compte de service pour exécuter des compilations en votre nom. Vous pouvez spécifier autant de comptes de service que vous le souhaitez par projet. La gestion de plusieurs comptes de service vous permet d'accorder différentes autorisations à ces comptes de service en fonction des tâches qu'ils effectuent. Par exemple, vous pouvez utiliser un compte de service pour compiler et transférer des images vers Container Registry et un autre compte de service pour compiler et transférer des images dans Artifact Registry.

Avant de commencer

  • Activer les API Cloud Build and IAM.

    Activer les API

  • Pour utiliser les exemples de ligne de commande de ce guide, installez et configurez le SDK Cloud.

  • Assurez-vous d'avoir créé le compte de service que vous souhaitez utiliser. Vous devez créer le compte dans le projet Cloud dans lequel vous exécutez des compilations.

Configurer les journaux de compilation

Pour spécifier votre propre compte de service pour les compilations, vous devez stocker vos journaux de compilation dans Cloud Logging ou dans un bucket Cloud Storage créé par l'utilisateur. Vous ne pouvez pas stocker vos journaux dans le bucket de journaux par défaut.

Autorisations IAM requises

Pour savoir comment attribuer des rôles IAM à un compte de service, consultez la page Configurer l'accès aux ressources.

Exécuter des compilations à partir de la ligne de commande

  1. Dans le répertoire racine de votre projet, créez le fichier de configuration de compilation Cloud Build nommé cloudbuild.yaml ou cloudbuild.json.

  2. Dans le fichier de configuration de compilation :

    • Ajoutez un champ serviceAccount spécifiant l'adresse e-mail de votre compte de service.
    • Si vous stockez les journaux de compilation dans Logging, ajoutez un champ logging et définissez sa valeur sur CLOUD_LOGGING_ONLY.
    • Si vous stockez les journaux de compilation dans un bucket Cloud Storage créé par l'utilisateur, procédez comme suit :
      • Ajoutez un champ logging et définissez sa valeur sur GCS_ONLY.
      • Ajoutez un champ logsBucket et définissez sa valeur sur l'emplacement de votre bucket Cloud Storage.

    Vous ne pouvez pas stocker de journaux dans le bucket de journaux par défaut lorsque vous utilisez le compte de service spécifié par l'utilisateur.

    Le fichier de configuration de compilation suivant configure Cloud Build pour exécuter des compilations à l'aide d'un compte de service spécifié par l'utilisateur et configure les journaux de compilation pour qu'ils soient stockés dans un bucket Cloud Storage créé par l'utilisateur:

    YAML

    steps:
    - name: 'bash'
      args: ['echo', 'Hello world!']
    logsBucket: 'LOGS_BUCKET_LOCATION'
    serviceAccount: 'projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT'
    options:
      logging: GCS_ONLY
    

    JSON

    {
      "steps": [
      {
        "name": "bash",
        "args": [
          "echo",
          "Hello world!"
        ]
      }
      ],
      "logsBucket": "LOGS_BUCKET_LOCATION",
      "serviceAccount": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT",
      "options": {
        "logging": "GCS_ONLY"
      }
    }
    

    Remplacez les valeurs d'espace réservé dans votre fichier de configuration de compilation par les éléments suivants:

    • LOGS_BUCKET_LOCATION est le bucket Cloud Storage où stocker les journaux de compilation. Exemple :gs://mylogsbucket
    • PROJECT_NAME correspond à l'ID du projet Cloud sur lequel vous exécutez la compilation.
    • SERVICE_ACCOUNT est l'adresse e-mail ou l'ID unique du compte de service que vous souhaitez spécifier pour les compilations. Exemple : my-sa-name@my-project-name.iam.gserviceaccount.com.
  3. Lancez la compilation à l'aide du fichier de configuration de compilation :

     gcloud builds submit --config CONFIG_FILE_PATH SOURCE_DIRECTORY
    

Remplacez les valeurs d'espace réservé dans les commandes ci-dessus par les éléments suivants :

  • CONFIG_FILE_PATH est le chemin d'accès du fichier de configuration de compilation
  • SOURCE_DIRECTORY est le chemin d'accès ou l'URL du code source.

Si vous ne spécifiez pas les éléments CONFIG_FILE_PATH et SOURCE_DIRECTORY dans la commande gcloud builds submit, Cloud Build considère que le fichier de configuration de compilation et le code source se trouvent dans le répertoire de travail actuel.

Exécuter des compilations à l'aide de déclencheurs de compilation

  1. Dans votre dépôt source, créez le fichier de configuration de compilation Cloud Build nommé cloudbuild.yaml ou cloudbuild.json.

  2. Dans le fichier de configuration de compilation :

    • Si vous stockez les journaux de compilation dans Logging, ajoutez un champ logging et définissez sa valeur sur CLOUD_LOGGING_ONLY.
    • Si vous stockez les journaux de compilation dans un bucket Cloud Storage créé par l'utilisateur, procédez comme suit :
      • Ajoutez un champ logging et définissez sa valeur sur GCS_ONLY.
      • Ajoutez un champ logsBucket et définissez sa valeur sur l'emplacement de votre bucket Cloud Storage.

    Vous ne pouvez pas stocker de journaux dans le bucket de journaux par défaut lorsque vous utilisez le compte de service spécifié par l'utilisateur.

    Le fichier de configuration de compilation suivant configure les journaux de compilation pour qu'ils soient stockés dans un bucket Cloud Storage créé par l'utilisateur:

    YAML

    steps:
    - name: 'bash'
      args: ['echo', 'Hello world!']
    logsBucket: 'LOGS_BUCKET_LOCATION'
    options:
      logging: GCS_ONLY
    

    JSON

    {
      "steps": [
      {
        "name": "bash",
        "args": [
          "echo",
          "Hello world!"
        ]
      }
      ],
      "logsBucket": "LOGS_BUCKET_LOCATION",
      "options": {
        "logging": "GCS_ONLY"
      }
    }
    

    Remplacez la valeur d'espace réservé dans votre fichier de configuration de compilation par ce qui suit:

    • LOGS_BUCKET_LOCATION est le bucket Cloud Storage où stocker les journaux de compilation. Exemple :gs://mylogsbucket
  3. Spécifiez un compte de service à utiliser avec votre déclencheur de compilation:

    Console

    1. Créez ou modifiez votre déclencheur de compilation.
    2. Dans le champ Compte de service, spécifiez votre compte de service. Si aucun compte de service n'est spécifié, le compte de service Cloud Build est utilisé par défaut.
    3. Cliquez sur Créer pour enregistrer le déclencheur de compilation.

    gcloud

    Lors de la création d'un déclencheur de compilation, spécifiez votre compte de service à l'aide de l'option --service-account. Si vous ne spécifiez pas de compte de service, le compte de service Cloud Build par défaut est utilisé. Dans l'exemple suivant, la commande gcloud crée un déclencheur de compilation lorsque le code source se trouve dans GitHub:

     gcloud beta builds triggers create github \
        --name=TRIGGER_NAME \
        --repo-name=REPO_NAME \
        --repo-owner=REPO_OWNER \
        --branch-pattern=BRANCH_PATTERN
        --build-config=BUILD_CONFIG_FILE
        --service-account=SERVICE_ACCOUNT
    

    Remplacez les valeurs d'espace réservé dans votre fichier de configuration de compilation par les éléments suivants:

    • TRIGGER_NAME correspond au nom de votre déclencheur de compilation.
    • REPO_NAME est le nom du dépôt.
    • REPO_OWNER est le nom d'utilisateur du propriétaire du dépôt.
    • BRANCH_PATTERN est le nom de la branche de votre dépôt sur lequel appeler la compilation.
    • TAG_PATTERN est le nom du tag de votre dépôt sur lequel appeler la compilation.
    • BUILD_CONFIG_FILE correspond au chemin d'accès à votre fichier de configuration de compilation.
    • SERVICE_ACCOUNT correspond à l'adresse e-mail associée à votre compte de service.

Votre déclencheur de compilation appelle une compilation en réponse à l'événement associé à votre déclencheur. Par exemple, votre déclencheur s'exécute lorsque le code source est transféré vers le dépôt. Pour en savoir plus sur les déclencheurs, consultez la pageCréer et gérer des déclencheurs de compilation.

Étape suivante