Cette page explique comment connecter un dépôt GitHub à Cloud Build. Pour en savoir plus sur les dépôts Cloud Build, consultez la page Dépôts Cloud Build.
Avant de commencer
-
Enable the Cloud Build and Secret Manager APIs.
- 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.
Autorisations IAM requises
Pour connecter votre hôte GitHub, accordez à l'administrateur de connexion Cloud Build (roles/cloudbuild.connectionAdmin
)
à votre compte utilisateur.
Pour ajouter les rôles requis à votre compte utilisateur, consultez 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.
Pour créer des connexions à l'aide des étapes d'installation de gcloud
, accordez le
le rôle d'administrateur Secret Manager (roles/secretmanager.admin
) à
l'agent de service Cloud Build en exécutant la commande suivante dans votre
Projet Google Cloud:
PN=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)")
CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \
--role="roles/secretmanager.admin"
Connecter un hôte GitHub
Console
Connecter votre dépôt GitHub à Cloud Build :
Ouvrez la page Dépôts de la console Google Cloud.
La page Dépôts s'affiche.
Dans le sélecteur de projet de la barre supérieure, sélectionnez votre projet Google Cloud.
En haut de la page, sélectionnez l'onglet 2nd gen (2e génération).
Cliquez sur Créer une connexion hôte pour connecter un nouvel hôte à Cloud Build.
Dans le panneau de gauche, sélectionnez GitHub comme fournisseur source.
Dans la section Configure Connection (Configurer la connexion), saisissez les informations suivantes:
Région: sélectionnez une région pour votre connexion.
Name (Nom) : saisissez le nom de votre connexion.
Cliquez sur Se connecter.
Après avoir cliqué sur le bouton Connecter, vous serez invité à autoriser le Application GitHub Cloud Build pour 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 de votre compte utilisateur GitHub et stocke le jeton d'autorisation obtenu en tant que secret dans Secret Manager dans 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. Cloud Build Le compte d'agent de service (
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.
Vous venez de créer une connexion GitHub.
gcloud
Pour connecter votre hôte GitHub à l'aide de gcloud
, procédez comme suit :
procédez comme suit:
Saisissez la commande suivante pour établir une connexion à votre compte GitHub dépôt:
gcloud builds connections create github CONNECTION_NAME --region=REGION
Où :
- CONNECTION_NAME est le nom de votre connexion.
REGION correspond à la région de votre déclencheur.
Après avoir exécuté la commande
gcloud builds connections
, un lien vous permet d'autoriser l'application GitHub Cloud Build.Connectez-vous à votre compte
github.com
.Suivez le lien pour autoriser l'application GitHub Cloud Build.
Une fois l'application autorisée, Cloud Build stocke une clé d'authentification comme secret dans Secret Manager dans votre compte Google Cloud projet. Vous pouvez consulter vos secrets sur la page Secret Manager.
Installez l'application GitHub Cloud Build dans votre compte ou dans une organisation qui vous appartient.
Autorisez l'installation à l'aide de votre compte GitHub et de votre choix de dépôt. lorsque vous y êtes invité.
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.
- REGION est la région de votre déclencheur.
Si le champ
installationState
est défini surCOMPLETE
, vous avez correctement installé la connexion. Sinon, le champinstallationState
indique un lien vers les étapes supplémentaires requises.
Vous venez de créer une connexion GitHub.
Connecter un hôte GitHub par programmation
Terraform
Vous pouvez connecter votre hôte GitHub à Cloud Build à l'aide de la à votre fournisseur Google Terraform en procédant comme suit:
Installez l'application GitHub Cloud Build sur votre compte GitHub ou dans une organisation dont vous êtes propriétaire.
Créez un jeton d'accès personnel.
Assurez-vous de ne pas définir de date d'expiration pour votre jeton et sélectionnez les autorisations suivantes lorsque vous y êtes invité dans GitHub :
repo
etread:user
. Si votre application est installée dans une organisation, assurez-vous également sélectionnez l'autorisationread:org
.Une fois que vous avez généré votre jeton d'accès personnel, enregistrez-le dans un endroit sécurisé. Vous utiliserez le jeton généré dans les étapes suivantes.
Dans l'exemple suivant, l'extrait de code effectue les opérations suivantes:
Il configure le fournisseur Terraform pour Google
Crée un secret pour stocker les jetons d'accès personnels GitHub afin d'accorder des autorisations au 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 est l'ID de votre jeton ou de votre secret dans Secret Manager.
- GITHUB_PAT est l'ID de votre jeton d'accès personnel dans GitHub.
- PROJECT_ID correspond à votre ID de projet Google Cloud.
- REGION est la région de votre connexion.
- CONNECTION_NAME est le nom de votre connexion GitHub.
- INSTALLATION_ID est l'ID d'installation de votre application GitHub Cloud Build. Votre
l'ID d'installation se trouve dans l'URL de votre
Application GitHub. Dans l'URL suivante,
https://github.com/settings/installations/1234567
, l'ID d'installation correspond à la valeur numérique1234567
.
Vous venez de créer une connexion GitHub.
gcloud
Pour connecter votre hôte GitHub à l'aide d'un jeton et d'un ID d'installation existants obtenu à partir d'une connexion précédente, procédez comme suit:
Installez l'application GitHub Cloud Build sur votre compte GitHub ou dans une organisation dont vous êtes propriétaire.
Créez un jeton d'accès personnel.
Assurez-vous de définir votre jeton de sorte qu'il n'ait pas de date d'expiration et sélectionnez le les autorisations suivantes lorsque vous y êtes invité dans GitHub:
repo
etread:user
. Si votre application est installée dans une organisation, veillez également à sélectionner l'autorisationread:org
.Une fois que vous avez généré votre jeton d'accès personnel, enregistrez-le dans un endroit sécurisé. Vous utiliserez le jeton généré dans les étapes suivantes.
Stockez votre jeton dans Secret Manager dans votre projet Google Cloud en exécutant la commande suivante :
echo -n TOKEN | gcloud secrets create SECRET_NAME --data-file=-
Où :
- TOKEN est votre jeton d'accès personnel.
- SECRET_NAME est le nom que vous souhaitez attribuer à votre secret dans Secret Manager.
Accordez à l'agent de service Cloud Build l'accès au secret, où SECRET_NAME est le 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"
Créez votre connexion GitHub:
gcloud builds connections create github CONNECTION_NAME \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/SECRET_NAME/versions/1 \ --app-installation-id=INSTALLATION_ID --region=REGION
Où :
- CONNECTION_NAME est le nom de votre connexion.
- PROJECT_ID correspond à votre ID de projet Google Cloud.
- SECRET_NAME est le nom de votre secret tel qu'il est stocké dans Secret Manager.
- INSTALLATION_ID est l'ID d'installation de votre application GitHub. Votre
l'ID d'installation se trouve dans l'URL de votre
Application GitHub. Dans l'URL suivante,
https://github.com/settings/installations/1234567
, l'ID d'installation correspond à la valeur numérique1234567
. - REGION est la région de votre connexion.
Vous avez maintenant créé une connexion GitHub.
Connecter un dépôt GitHub
Console
Pour connecter un dépôt GitHub à une connexion hôte, procédez comme suit:
Ouvrez la page Dépôts de la console Google Cloud.
La page Dépôts s'affiche.
En haut de la page, sélectionnez l'onglet 2nd gen (2e génération).
Cliquez sur Link Repositories (Associer des dépôts) pour associer des dépôts à partir de votre connexion.
Le panneau Connecter des dépôts s'affiche.
Dans le panneau Connecter des dépôts, saisissez les informations suivantes:
- Connexion: sélectionnez une connexion dans le menu déroulant.
Dépôt: sélectionnez un dépôt à associer à votre connexion.
Nom du dépôt : saisissez un nom pour votre dépôt.
- Généré: sélectionnez cette option pour que Cloud Build générés en votre nom pour les dépôts sélectionnés.
Manuel: sélectionnez cette option pour indiquer manuellement le nom de vos des dépôts sélectionnés.
Si vous sélectionnez Manuel, vous pouvez modifier le nom de vos les dépôts sélectionnés dans la section Noms des dépôts.
Cliquez sur Associer pour associer votre dépôt à votre connexion.
Vous avez maintenant associé votre dépôt GitHub à votre connexion.
gcloud
Pour ajouter un dépôt GitHub à votre connexion, saisissez la commande suivante : commande:
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 de votre connexion.
- REGION est la région de votre connexion.
Vous avez maintenant associé un dépôt à votre connexion GitHub.
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 correspond à votre ID de 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 d'hôte de votre dépôt. Exemple :
https://github.com/myuser/myrepo.git
.
Vous avez maintenant associé un dépôt à votre connexion GitHub.
Étape suivante
- Découvrez comment créer des dépôts à partir de GitHub.
- Découvrez comment effectuer des déploiements bleu-vert sur Compute Engine.