Se connecter à un dépôt GitHub

Cette page explique comment connecter un dépôt GitHub à Cloud Build. Pour en savoir plus sur les dépôts Cloud Build, consultez Dépôts Cloud Build.

Avant de commencer

  • Activez les API Cloud Build et Secret Manager.

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

    Activer les API

  • Préparez votre code source dans un dépôt GitHub.
  • Vous devez disposer d'un fichier de configuration Dockerfile ou Cloud Build dans votre dépôt source GitHub.
  • Si vous connectez initialement votre dépôt à Cloud Build, assurez-vous de disposer d'autorisations de niveau administrateur sur votre dépôt. Pour en savoir plus sur les autorisations associées aux dépôts GitHub, consultez la section Niveaux d'autorisation des dépôts pour une organisation.
  • Pour utiliser les commandes gcloud sur cette page, installez Google Cloud CLI.

Se connecter à un hôte GitHub

Console

Connecter votre dépôt GitHub à Cloud Build :

  1. Ouvrez la page Dépôts dans la console Google Cloud .

    Ouvrir la page "Dépôts"

    La page Dépôts s'affiche.

  2. Dans le sélecteur de projet de la barre supérieure, sélectionnez votre projet Google Cloud .

  3. En haut de la page, sélectionnez l'onglet 2e génération.

  4. Cliquez sur Créer une connexion hôte pour connecter un nouvel hôte à Cloud Build.

  5. Dans le panneau de gauche, sélectionnez GitHub comme fournisseur de source.

  6. Dans la section Configurer la connexion, saisissez les informations suivantes :

    • Région : sélectionnez une région pour votre connexion.

    • Nom : saisissez un nom pour votre connexion.

  7. Facultatif : Si vous souhaitez gérer les clés de chiffrement utilisées pour chiffrer les jetons d'accès à vos dépôts GitHub, accédez à la section Chiffrement et choisissez une clé Cloud Key Management Service. Pour en savoir plus, consultez Activer les clés de chiffrement gérées par le client pour Secret Manager.

  8. Cliquez sur Se connecter.

    Après avoir cliqué sur le bouton Associer, vous êtes invité à autoriser l'application GitHub Cloud Build à accéder à votre compte GitHub. Vous pouvez révoquer l'accès à l'application en la désinstallant ou en la supprimant de votre hôte à tout moment.

    Cloud Build demande l'autorisation d'accéder à votre compte utilisateur GitHub et stocke le jeton d'autorisation obtenu en tant que secret dans Secret Manager de votre projet. Le jeton d'autorisation permet de valider l'accès de votre compte utilisateur pour l'installation de l'application GitHub Cloud Build et aux dépôts associés. Le compte de l'agent de service Cloud Build (service-{projectNumber}@gcp-sa-cloudbuild.iam.gserviceaccount.com) est utilisé pour accéder à votre secret. Pour afficher votre secret, consultez Lister les secrets et afficher leurs détails.

    Après avoir autorisé l'application GitHub Cloud Build, vous êtes redirigé vers la page Dépôts de Cloud Build.

gcloud

Pour connecter votre hôte GitHub à l'aide de gcloud, procédez comme suit :

  1. Saisissez la commande suivante pour établir une connexion à votre dépôt GitHub :

     gcloud builds connections create github CONNECTION_NAME --region=REGION
    

    Où :

    • CONNECTION_NAME est le nom de votre connexion tel qu'il apparaîtra dans Cloud Build.
    • REGION est la région de votre déclencheur.

    Après avoir exécuté la commande gcloud builds connections, un lien s'affiche pour autoriser l'application GitHub Cloud Build.

  2. Connectez-vous à votre compte github.com.

  3. Suivez le lien pour autoriser l'application GitHub Cloud Build.

    Après avoir autorisé l'application, Cloud Build stocke un jeton d'authentification en tant que secret dans Secret Manager dans votre projet Google Cloud. Vous pouvez afficher vos secrets sur la page Secret Manager.

  4. Installez l'application GitHub Cloud Build dans votre compte ou dans un compte d'organisation dont vous êtes propriétaire.

    Autorisez l'installation à l'aide de votre compte GitHub et sélectionnez les autorisations de dépôt lorsque vous y êtes invité.

  5. Vérifiez l'installation de votre connexion GitHub en exécutant la commande suivante :

     gcloud builds connections describe CONNECTION_NAME --region=REGION
    

    Où :

    • CONNECTION_NAME est le nom de votre connexion hôte GitHub dans Cloud Build.
    • REGION est la région de votre déclencheur.

    Si le champ installationState est défini sur COMPLETE, vous avez correctement installé la connexion. Sinon, le champ installationState fournit un lien vers les étapes supplémentaires requises.

Se connecter à un hôte GitHub de manière programmatique

Pour vous connecter à un hôte GitHub de manière programmatique, vous devez d'abord configurer le jeton d'authentification pour la connexion, puis créer la connexion GitHub dans Cloud Build.

Configurer un jeton d'authentification

Pour vous connecter à un hôte GitHub de manière programmatique, vous devez créer une connexion GitHub Cloud Build, y compris un secret pour un jeton d'authentification. Vous pouvez obtenir un jeton d'authentification de deux manières :

  • Créez un jeton d'accès personnel dans GitHub.

  • Utilisez un jeton provenant d'une connexion Cloud Build GitHub existante. Cette méthode est utile si votre compte GitHub comporte des restrictions qui vous empêchent de créer des jetons d'accès personnel. De plus, si vous référencez ce jeton lorsque vous créez une connexion à partir d'un script, vous n'avez pas besoin d'authentifier manuellement la connexion à l'aide d'un navigateur Web.

Jeton d'accès personnel

  1. Suivez la procédure pour créer un jeton d'accès personnel dans la documentation GitHub.

  2. Sélectionnez les niveaux d'accès OAuth suivants lorsque vous y êtes invité dans GitHub :

    • repo pour accorder un accès complet aux dépôts publics et privés.
    • read:user pour autoriser l'accès en lecture aux données de profil d'un utilisateur.
    • read:org pour un accès en lecture seule aux membres et aux projets de l'organisation (si votre application est installée dans une organisation).
  3. Enregistrez la valeur de votre jeton d'accès personnel. Vous l'utiliserez dans une prochaine étape.

Connexion existante

  1. Exécutez la commande suivante dans gcloud CLI :

    gcloud builds connections describe CONNECTION_NAME --region=REGION
    

    Où :

    • CONNECTION_NAME est le nom de votre connexion hôte GitHub.
    • REGION est la région de votre déclencheur.
  2. Dans le résultat de la commande, la valeur de authorizerTokenSecretVersion correspond à l'ID du secret contenant le jeton d'authentification de la connexion. Copiez cette valeur et enregistrez-la dans un emplacement sécurisé. Vous utiliserez le jeton généré dans les étapes suivantes.

Créer la connexion GitHub

Créez une connexion GitHub à l'aide de Terraform ou de la gcloud CLI.

Terraform

Vous pouvez connecter votre hôte GitHub à Cloud Build à l'aide du fournisseur Google Terraform en procédant comme suit :

  1. Installez l'application GitHub Cloud Build dans votre compte GitHub ou dans une organisation dont vous êtes propriétaire.

  2. Configurez votre connexion GitHub dans Terraform. L'exemple de code Terraform suivant présente une configuration qui effectue les opérations suivantes :

    • Configure le fournisseur Google Terraform

    • Crée un secret pour stocker les jetons d'accès personnels GitHub

    • Accorde des autorisations à l'agent de service Cloud Build pour accéder au secret

    • Crée une connexion GitHub

    // Configure the terraform google provider
    terraform {
      required_providers {
        google = {}
        }
    }
    
    // Create a secret containing the personal access token and grant permissions to the Service Agent
    resource "google_secret_manager_secret" "github_token_secret" {
        project = PROJECT_ID
        secret_id = SECRET_ID
    
        replication {
            auto {}
        }
    }
    
    resource "google_secret_manager_secret_version" "github_token_secret_version" {
        secret = google_secret_manager_secret.github_token_secret.id
        secret_data = GITHUB_PAT
    }
    
    data "google_iam_policy" "serviceagent_secretAccessor" {
        binding {
            role = "roles/secretmanager.secretAccessor"
            members = ["serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"]
        }
    }
    
    resource "google_secret_manager_secret_iam_policy" "policy" {
      project = google_secret_manager_secret.github_token_secret.project
      secret_id = google_secret_manager_secret.github_token_secret.secret_id
      policy_data = data.google_iam_policy.serviceagent_secretAccessor.policy_data
    }
    
    // Create the GitHub connection
    resource "google_cloudbuildv2_connection" "my_connection" {
        project = PROJECT_ID
        location = REGION
        name = CONNECTION_NAME
    
        github_config {
            app_installation_id = INSTALLATION_ID
            authorizer_credential {
                oauth_token_secret_version = google_secret_manager_secret_version.github_token_secret_version.id
            }
        }
        depends_on = [google_secret_manager_secret_iam_policy.policy]
    }
    

Où :

  • PROJECT_NUMBER est le numéro de votre projet Google Cloud .
  • SECRET_ID correspond à l'ID de votre jeton d'accès personnel GitHub ou de votre secret dans Secret Manager.
  • GITHUB_PAT correspond au jeton d'accès du jeton d'accès personnel dans GitHub.
  • PROJECT_ID est l'ID de votre projet Google Cloud .
  • REGION est la région de votre connexion.
  • CONNECTION_NAME est le nom de votre connexion tel qu'il apparaîtra dans Cloud Build.
  • INSTALLATION_ID correspond à l'ID d'installation de votre application GitHub Cloud Build. Vous trouverez votre ID d'installation dans l'URL de votre application GitHub Cloud Build. Dans l'URL suivante, https://github.com/settings/installations/1234567, l'ID d'installation est la valeur numérique 1234567.

gcloud

Pour connecter votre hôte GitHub à Cloud Build, procédez comme suit :

  1. Installez l'application GitHub Cloud Build dans votre compte GitHub ou dans une organisation dont vous êtes propriétaire.

  2. Facultatif. Si vous utilisez un jeton d'accès personnel GitHub pour l'authentification, exécutez la commande suivante pour stocker le jeton dans Secret Manager dans votre projet Google Cloud  :

    echo -n 'TOKEN' | gcloud secrets create SECRET_NAME --data-file=-
    
  3. Accordez l'accès à l'agent de service Cloud Build au secret, où SECRET_NAME correspond au nom de votre secret tel qu'il est stocké dans Secret Manager :

    PROJECT_ID=$(gcloud config list --format="value(core.project)")
    PN=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)")
    CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com"
    gcloud secrets add-iam-policy-binding SECRET_NAME \
      --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \
      --role="roles/secretmanager.secretAccessor"
    
  4. Créez votre connexion GitHub :

    gcloud builds connections create github CONNECTION_NAME \
      --authorizer-token-secret-version=projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION  \
      --app-installation-id=INSTALLATION_ID --region=REGION
    

    Où :

    • CONNECTION_NAME est le nom de votre connexion hôte GitHub dans Cloud Build.
    • PROJECT_ID est l'ID de votre projet Google Cloud .
    • SECRET_NAME est le nom de votre secret tel qu'il est stocké dans Secret Manager.
    • VERSION est la version de votre secret.
    • INSTALLATION_ID est l'ID d'installation de votre application GitHub. Vous trouverez votre ID d'installation dans l'URL de votre application GitHub Cloud Build. Dans l'URL suivante, https://github.com/settings/installations/1234567, l'ID d'installation est la valeur numérique 1234567.
    • REGION est la région de votre connexion.

Connecter un dépôt GitHub

Console

Pour associer un dépôt GitHub à une connexion hôte, procédez comme suit :

  1. Ouvrez la page Dépôts dans la console Google Cloud .

    Ouvrir la page "Dépôts"

    La page Dépôts s'affiche.

  2. En haut de la page, sélectionnez l'onglet 2e génération.

  3. Cliquez sur Associer des dépôts pour associer des dépôts à votre connexion.

    Le panneau Connecter des dépôts s'affiche.

  4. Dans le panneau Connecter des dépôts, saisissez les informations suivantes :

    1. Connexion : sélectionnez une connexion dans le menu déroulant.
    2. Dépôt : sélectionnez un dépôt à associer à votre connexion.

    3. Nom du dépôt : saisissez un nom pour votre dépôt.

      1. Généré : sélectionnez cette option pour que Cloud Build génère automatiquement des noms de dépôts pour vous pour les dépôts sélectionnés.
      2. Manuelle : sélectionnez cette option pour spécifier manuellement les noms de vos dépôts sélectionnés.

        Si vous sélectionnez Manuel, vous pouvez modifier les noms des dépôts sélectionnés dans la section Noms des dépôts.

  5. Cliquez sur Associer pour associer votre dépôt à votre connexion.

gcloud

Pour ajouter un dépôt GitHub à votre connexion, saisissez la commande suivante :

   gcloud builds repositories create REPO_NAME \
     --remote-uri=REPO_URI \
     --connection=CONNECTION_NAME --region=REGION

Où :

  • REPO_NAME est le nom du dépôt.
  • REPO_URI est le lien vers votre dépôt GitHub. Exemple : https://github.com/cloud-build/test-repo.git.
  • CONNECTION_NAME est le nom attribué à la connexion hôte GitHub Enterprise créée dans Cloud Build à partir de Se connecter à un hôte GitHub.
  • REGION est la région de votre connexion.

Terraform

Pour ajouter un dépôt GitHub à votre connexion, ajoutez l'extrait de code suivant à votre configuration Terraform :

    resource "google_cloudbuildv2_repository" "my_repository" {
      project = "PROJECT_ID"
      location = "REGION"
      name = "REPO_NAME"
      parent_connection = google_cloudbuildv2_connection.my_connection.name
      remote_uri = "URI"
  }

Où :

  • PROJECT_ID est l'ID de votre projet Google Cloud .
  • REPO_NAME est le nom de votre dépôt GitHub.
  • REGION est la région de votre connexion.
  • URI est l'URI hôte de votre dépôt. Exemple : https://github.com/myuser/myrepo.git.

Étapes suivantes