Créer des dépôts depuis GitHub Enterprise

Cloud Build vous permet de créer des déclencheurs sur une instance GitHub Enterprise. Cette page explique comment utiliser des déclencheurs GitHub Enterprise pour appeler des builds en réponse à des commits ou des requêtes d'extraction à partir d'une instance GitHub Enterprise. Elle explique également comment créer des dépôts à partir de GitHub Enterprise si votre instance est hébergée dans un environnement sur site.

Avant de commencer

  • Activer les API Cloud Build and Secret Manager.

    Activer les API

  • Assurez-vous de disposer de la dernière version de GitHub Enterprise.
  • Assurez-vous de disposer d'un accès administrateur aux dépôts pour lesquels vous souhaitez activer les déclencheurs GitHub Enterprise.
  • Assurez-vous de mapper un domaine personnalisé à votre hôte GitHub Enterprise et de disposer d'un certificat SSL valide pour votre hôte.

Autorisations IAM requises

Pour connecter votre hôte GitHub Enterprise, accordez le rôle Éditeur Cloud Build (roles/cloudbuild.builds.editor) et Propriétaire des intégrations Cloud Build (cloudbuild.integrations.owner) à votre compte utilisateur.

Pour ajouter les rôles requis à votre compte utilisateur, consultez la page Configurer l'accès aux ressources Cloud Build. Pour en savoir plus sur les rôles IAM associés à Cloud Build, consultez la page Rôles et autorisations IAM.

Créer une application GitHub Cloud Build

Vous devrez créer une application GitHub sur votre instance GitHub Enterprise. L'application enverra des événements de webhooks à un point de terminaison Cloud Build. Lors de la réception de ces événements, Cloud Build validera la charge utile et exécutera une compilation si l'événement correspond à un déclencheur GitHub Cloud Build. Vous devez installer l'application sur les dépôts pour lesquels vous souhaitez configurer des déclencheurs GitHub Enterprise.

Cette section explique comment créer une application GitHub:

  1. Connectez-vous à votre instance GitHub Enterprise.
  2. Assurez-vous de disposer de la dernière version de GitHub Enterprise.

    Certaines versions de GitHub Enterprise peuvent nécessiter la désactivation des cookies SameSite pour effectuer les étapes suivantes dans un navigateur Chrome. Si vous utilisez une version de GitHub Enterprise antérieure à la version 2.21.3, vous devez désactiver les cookies SameSite:

    1. Accédez à chrome://flags/.
    2. Saisissez samesite dans la barre de filtre.
    3. Assurez-vous que les cookies SameSite par défaut sont DÉSACTIVÉS.

      Capture d'écran de SameSite désactivé

    4. Redémarrez votre navigateur.

  3. Ouvrez la page Gérer les dépôts de Cloud Build:

    Ouvrir la page "Gérer les dépôts"

  4. Cliquez sur Connecter un hôte.

    Le panneau Connecter un hôte s'affiche. Il vous invite à créer une connexion hôte pour connecter vos dépôts GitHub Enterprise à Cloud Build.

  5. Dans la section URL de l'hôte, saisissez l'URL de votre instance GitHub Enterprise. Exemple : ghe.example.com.

  6. Dans la section Clé API, cliquez sur Générer pour générer une clé API ou saisissez une clé API si vous en avez déjà une.

    Si vous souhaitez créer une clé API manuellement, procédez comme suit:

    Pour obtenir une clé API:

    1. Ouvrez la page Identifiants dans Cloud Console:

      Ouvrez la page Identifiants.

    2. Cliquez sur Créer des identifiants.

    3. Cliquez sur Clé API.

      Une fenêtre pop-up contenant la clé API s'affiche.

    4. Cliquez sur Restreindre la clé.

    5. Sous Restrictions des API, sélectionnez l'API Cloud Build dans le menu déroulant.

    6. Cliquez sur Enregistrer.

  7. [FACULTATIF] Dans la section Organisation, saisissez l'organisation pour laquelle l'application GitHub sera créée. Si cette section est laissée vide, l'application sera créée sous le compte utilisateur actuel.

  8. [FACULTATIF] Dans la section Certificat CA, cliquez sur Parcourir pour importer votre certificat autosigné. Votre certificat ne doit pas dépasser 10 Ko et doit être au format PEM (.pem, .cer ou .crt). Si cette section est laissée vide, un ensemble de certificats par défaut sera utilisé.

  9. [FACULTATIF] Dans la section Réseau, saisissez le nom de votre projet réseau et un nom de réseau pour votre réseau si votre instance GitHub Enterprise est hébergée sur site, et vous avez appairer votre réseau à Google Cloud.

  10. Cliquez sur Connecter un hôte.

    Si votre instance GitHub Enterprise se trouve sur un réseau appairé, le processus de connexion de l'hôte peut prendre plusieurs minutes.

  11. Si vous souhaitez connecter vos dépôts à Cloud Build, cliquez sur Connecter des dépôts. Sinon, cliquez sur OK.

  12. Une fois votre hôte connecté, une fenêtre pop-up vous invite à saisir le nom de votre application GitHub Enterprise. Avant de saisir le nom de votre application, vous serez peut-être invité à vous connecter. Si vous utilisez Google Chrome en tant que navigateur, la page pop-up peut vous demander de saisir manuellement les informations de votre application GitHub Enterprise.

  13. Après vous être connecté, saisissez le nom de votre application GitHub.

  14. Cliquez sur Créer une application GitHub.

    Vous venez de créer une application GitHub sur votre instance GitHub Enterprise. Cloud Build stocke automatiquement vos identifiants dans Secret Manager et connecte l'hôte à votre projet Cloud. Dans l'API, cette connexion est représentée par une ressource GitHubEnterpriseConfig ou une association entre Cloud Build et votre serveur GitHub Enterprise.

    Votre hôte est maintenant connecté. Vous pouvez cliquer sur Connecter des dépôts si vous souhaitez connecter des dépôts à Cloud Build.

Connecter vos dépôts GitHub Enterprise

Cette section explique comment mapper votre projet Cloud à l'application GitHub que vous avez créée dans la section précédente.

Console

  1. Ouvrez la page Déclencheurs de Google Cloud Console.

    Ouvrir la page Déclencheurs

  2. Cliquez sur Connecter un dépôt.

  3. Sous Sélectionner une source, cliquez sur GitHub Enterprise.

  4. Sélectionnez votre connexion hôte (GitHub Enterprise Config) dans le menu déroulant.

  5. Cliquez sur Continuer.

  6. Autorisez votre application.

  7. Sous Sélectionner un dépôt, sélectionnez votre compte GitHub et Dépôt dans le menu déroulant.

API

Pour installer l'application GitHub sur le compte utilisateur ou l'organisation GitHub approprié, et la connecter à un projet Cloud Build, procédez comme suit:

  1. Accédez à l'URL associée à l'application GitHub que vous avez créée dans la section précédente:

       https://host-url/organizations/org-name/settings/apps/app-name/
    

    Où :

    • host-url est l'URL hôte de votre instance GitHub Enterprise.
    • org-name est le nom de l'organisation dans laquelle vous avez créé votre projet.
    • app-name est le nom de votre application GitHub.
  2. Installez l'application sur votre compte utilisateur ou votre organisation via l'URL.

    Une fois l'application installée, notez l'ID d'installation qui lui est associé. L'ID d'installation se trouve dans l'URL après l'installation de l'application.

  3. Créez un fichier json contenant les éléments suivants :

    {
     "Id": installation-id,
     "project_id": "project-id",
     "repository_setting_list": {
            "repository_settings": {
            "owner": "owner",
            "name": "repo-name",
          },
          "repository_settings": {
            "owner": "owner",
            "name": "repo-name-additional"
          },
         …
     },
        "enterprise_config_resource_name": "projects/project-number/githubEnterpriseConfigs/id"
    }
    

    Où :

    • installation-id est l'ID d'installation de l'application GitHub. Remarque: Cette valeur est un entier et ne nécessite pas de guillemets.
    • project-id correspond au projet Cloud associé à l'installation.
    • owner est le propriétaire du dépôt GitHub.
    • repo-name est le nom du dépôt GitHub.
    • [FACULTATIF] repo-name-additional correspond au nom d'un dépôt GitHub supplémentaire.
    • project-number est le numéro du projet Cloud.
    • id est l'ID de connexion hôte obtenu à partir de l'onglet Host Connections (Connexions de l'hôte) de la page Manage Repositories (Gérer les dépôts).
  4. Saisissez la commande curl suivante dans votre terminal, où project-id est l'ID du projet Cloud:

     curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" https://cloudbuild.googleapis.com/v1/projects/${PROJECT_ID}/installations -d @installation.json
    

Les dépôts associés à votre installation sont désormais visibles sur la page Déclencheurs de l'onglet Inactif.

Créer un déclencheur GitHub pour votre installation GitHub Enterprise

Cette section explique comment créer un déclencheur et l'associer à votre installation GitHub Enterprise. Si vous souhaitez utiliser des déclencheurs GitHub Enterprise dans un environnement sur site, consultez la page Créer des dépôts dans un environnement sur site à partir de GitHub Enterprise pour obtenir des instructions supplémentaires.

Console

Pour en savoir plus sur la création de déclencheurs à l'aide des déclencheurs GitHub, consultez la page Créer des déclencheurs GitHub.

API

Le modèle JSON suivant montre comment créer des déclencheurs via la ligne de commande:

  {
      "filename": "cloudbuild.yaml",
      "name": "trigger-name",
      "description": "trigger-description",
      "github": {
          "push": {
              "branch": ".*",
          },
          "owner": "owner",
          "name": "repo-name",
      "enterprise_config_resource_name": "projects/project-number/githubEnterpriseConfigs/id"
      },
      "include_build_logs": "INCLUDE_BUILD_LOGS_WITH_STATUS"
  }

Où :

  • trigger-name correspond au nom du déclencheur.
  • trigger-description est une description du déclencheur.
  • owner est le propriétaire du dépôt GitHub.
  • repo-name est le nom du dépôt GitHub.
  • project-number est le numéro du projet Cloud.
  • id est l'ID de votre GitHubEnterpriseConfig.
  • [FACULTATIF] : vous pouvez spécifier le champ _include_build_logs pour afficher les journaux de compilation de vos dépôts. Cette option est compatible avec les compilations depuis GitHub et GitHub Enterprise.

Saisissez la commande curl suivante dans votre terminal, où project-id est l'ID du projet Cloud:

  curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" https://cloudbuild.googleapis.com/v1/projects/project-id/triggers -d @trigger.json

Votre déclencheur est maintenant créé.

Créer des dépôts dans un environnement sur site à partir de GitHub Enterprise

Si votre instance GitHub Enterprise est hébergée dans un environnement sur site et non accessible via une connexion Internet publique, vous devez créer une connexion privée entre votre réseau VPC et le producteur de services. Vous avez également besoin d'un pool privé pour compiler dans un environnement sur site.

Pour créer un déclencheur GitHub Enterprise pour compiler dans votre environnement sur site, procédez comme suit:

  1. Créez une connexion privée entre votre réseau VPC et votre réseau de producteurs de services en procédant comme suit:

    1. Activez l'API Service Networking.
    2. Créez un réseau VPC ou sélectionnez un réseau VPC existant.

    3. Affectez une plage d'adresses IP nommée dans le réseau VPC. Pour utiliser le réseau VPC avec Cloud Build, la longueur de votre préfixe doit être inférieure ou égale à /23, par exemple /22, /21, etc.

    4. Établissez une connexion privée de réseau VPC entre votre réseau VPC et Google Cloud. Pour en savoir plus, consultez la section Créer une connexion privée.

    5. Si vous avez configuré le DNS pour votre instance GitHub Enterprise, vous devez appairer manuellement votre zone DNS à notre fournisseur de services. Pour en savoir plus, consultez la section Partager des zones DNS privées avec les producteurs de services.

    6. [FACULTATIF] Si vous ne souhaitez pas créer de connexion privée depuis votre projet Cloud, vous pouvez configurer un VPC partagé et demander à votre projet Cloud d'utiliser ce réseau si votre projet fait partie d'une organisation. Le VPC partagé doit toujours être appairé à l'API Service Networking.

  2. Utilisez des pools privés pour exécuter vos compilations. Si vous n'avez pas créé de pool privé, consultez Créer un pool privé.

  3. Créez un déclencheur GitHub Enterprise pour créer des dépôts hébergés sur une instance GitHub Enterprise.

Votre déclencheur GitHub Enterprise appelle désormais automatiquement les compilations sur votre instance GitHub Enterprise en fonction de votre configuration. Pour savoir comment exécuter des builds à l'aide d'un pool de nœuds de calcul privé, consultez la section Exécuter des builds dans un pool privé.

Étapes suivantes