Vous pouvez lancer des compilations automatiques avec les déclencheurs Jenkins et les Webhooks Secure Source Manager.
Rôles requis
Pour obtenir les autorisations nécessaires pour créer des déclencheurs de compilation Jenkins, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Administrateur de dépôts Secure Source Manager (
roles/securesourcemanager.repoAdmin
) sur votre dépôt -
Accesseur d'instances Secure Source Manager (
roles/securesourcemanager.instanceAccessor
) sur l'instance Secure Source Manager
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Pour savoir comment accorder des rôles Secure Source Manager, consultez Contrôle des accès avec IAM et Accorder aux utilisateurs l'accès à l'instance.
Configurer un déclencheur de webhook
Jenkins utilise des plug-ins de déclencheur de compilation pour activer l'automatisation CI/CD. Vous pouvez configurer des déclencheurs pour écouter les événements entrants, par exemple lorsqu'un nouveau commit est transféré vers un dépôt ou lorsqu'une demande d'extraction est lancée, puis exécuter automatiquement une compilation lorsque de nouveaux événements arrivent. Vous pouvez également configurer des déclencheurs pour créer du code en cas de modification de votre dépôt source ou uniquement sur les modifications correspondant à certains critères.
Pour configurer un déclencheur de webhook Jenkins générique :
Installez les plug-ins Jenkins Git, SSH Credential et Generic Webhook Trigger sur votre serveur Jenkins.
Générez une paire de clés SSH valide sur votre serveur Jenkins. Secure Source Manager n'accepte que les clés de type RSA.
Ajoutez le domaine de l'instance Secure Source Manager au fichier
known_hosts
SSH du serveur Jenkins en exécutant la commande suivante :ssh -t git@INSTANCE_ID-INSTANCE_PROJECT_NUMBER-ssh.us-central1.sourcemanager.dev
Où :
- INSTANCE_ID est le nom de votre instance Secure Source Manager.
- INSTANCE_PROJECT_NUMBER est le numéro de projet de votre instance Secure Source Manager. Pour savoir où trouver votre numéro de projet, consultez Identifier des projets.
Par exemple, la commande suivante ajoute le domaine d'instance pour une instance nommée
prod-test-instance
avec un numéro de projet123456789
.ssh -t git@prod-test-instance-123456789-ssh.us-central1.sourcemanager.dev
Répondez
yes
pour ajouter le domaine de l'instance à la liste des hôtes connus.Sur la page Manage Credentials (Gérer les identifiants) de Jenkins :
- Sélectionnez Nom d'utilisateur SSH avec clé privée.
- Collez la clé privée SSH de votre serveur Jenkins.
- Dans le menu déroulant Type, remplissez les autres champs obligatoires.
Cliquez sur Créer.
Dans l'interface Web Jenkins, créez une tâche Jenkins.
Sur la page de configuration du job Jenkins, dans la section Source Code Management (Gestion du code source), sélectionnez Git.
Dans la section Git, collez l'URL SSH du dépôt Secure Source Manager en tant qu'URL du dépôt, saisissez vos branches de compilation (par exemple,
*/main
), puis sélectionnez l'identifiant de clé SSH privée enregistré que vous avez ajouté précédemment sur la page Gérer les identifiants.Dans la section Build Triggers (Déclencheurs de compilation), sélectionnez Generic Webhook Trigger (Déclencheur de webhook générique).
Vous pouvez également ajouter un jeton pour que le job ne soit déclenché que si ce jeton est fourni lors de l'appel. Pour ajouter un jeton, dans la section Déclencheur de webhook générique, vous pouvez saisir un jeton dans le champ Jeton.
Dans la section Build (Compilation), fournissez un script de compilation que vous souhaitez utiliser pour cette tâche Jenkins. Par exemple, vous pouvez exécuter
cat README.md
pour imprimer le contenu de README.md.Cliquez sur Enregistrer pour créer la tâche Jenkins.
Configurer un compte de service et accorder les autorisations requises
Si vous ne disposez pas encore d'un compte de service que vous souhaitez utiliser, créez-en un.
Assurez-vous de disposer de l'autorisation
iam.serviceAccounts.actAs
sur le compte de service. Cette autorisation fait partie du rôle Utilisateur du compte de service (roles/iam.serviceAccountUser
).Dans l'interface Web Secure Source Manager, cliquez sur le menu
Autres options.Cliquez sur Clés SSH du compte de service. La page Clés SSH du compte de service s'ouvre et affiche la liste des clés existantes que vous avez ajoutées.
Cliquez sur Ajouter une clé.
Sur la page Add SSH key (Ajouter une clé SSH), saisissez les valeurs suivantes pour votre clé :
Compte de service : adresse e-mail du compte de service avec lequel vous souhaitez utiliser la clé SSH, au format
SA_NAME@PROJECT_ID.iam.gserviceaccount.com
.Où
SA_NAME
correspond au nom du compte de service.PROJECT_ID
correspond à l'ID du projet dans lequel le compte de service a été créé.
Clé publique SSH : clé publique SSH Jenkins.
Accorder des autorisations à l'agent de service Secure Source Manager
Si le compte de service ne se trouve pas dans le même projet que votre instance Secure Source Manager, vous devez également accorder à l'agent de service Secure Source Manager le rôle Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator
) ou l'autorisation iam.serviceAccounts.signJwt
.
Si votre compte de service se trouve dans le même projet que votre instance Secure Source Manager, passez à Attribuer un rôle de dépôt au compte de service.
Exécutez la commande suivante pour obtenir la stratégie IAM existante pour votre compte de service :
gcloud iam service-accounts get-iam-policy SERVICE_ACCOUNT \ --format json
Où SERVICE_ACCOUNT correspond au compte de service que vous souhaitez utiliser. Le compte doit être au format d'un ID de compte de service numérique ou d'une adresse e-mail, comme ceci :
123456789876543212345
oumy-iam-account@somedomain.com
.Le résultat inclut toutes les liaisons existantes ou, si aucune n'existe, la valeur
etag
semblable à ce qui suit :{ "etag": "BwUjHYKJUiQ=" }
Copiez le résultat dans un nouveau fichier nommé
policy.json
.Pour attribuer le rôle Créateur de jetons du compte de service (
roles/iam.ServiceAccountTokenCreator
) à l'agent de service Secure Source Manager, modifiezpolicy.json
pour ajouter les éléments suivants :{ "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:service-INSTANCE_PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com" ] }
où
INSTANCE_PROJECT_NUMBER
est le numéro de projet de votre instance Secure Source Manager.Exécutez la commande suivante pour remplacer la stratégie IAM existante du compte de service :
gcloud iam service-accounts set-iam-policy SERVICE_ACCOUNT POLICY_FILE
Remplacez les éléments suivants :
- SERVICE_ACCOUNT par l'ID ou l'adresse e-mail du compte de service.
- POLICY_FILE par l'emplacement et le nom du fichier au format JSON incluant la nouvelle règle.
Attribuer un rôle de dépôt au compte de service
- Dans l'interface Web Secure Source Manager, accédez au dépôt pour lequel vous souhaitez accorder des autorisations au compte de service.
- Cliquez sur l'onglet Autorisations.
- Cliquez sur Ajouter des utilisateurs.
- Dans le champ Ajouter un compte principal, saisissez l'adresse e-mail du compte de service.
- Dans le menu déroulant Rôle, sélectionnez Lecteur du dépôt Secure Source Manager.
Attribuez le rôle
securesourcemanager.instanceAccessor
au compte de service en exécutant la commande suivante :gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SA_EMAIL \ --role=roles/securesourcemanager.instanceAccessor
Remplacez les éléments suivants :
PROJECT_ID
par l'ID de projet de l'instance Secure Source Manager.SA_EMAIL
par l'adresse e-mail du compte de service.
Configurer un webhook
- Dans l'interface Web Secure Source Manager, accédez au dépôt pour lequel vous souhaitez créer un webhook.
- Cliquez sur Paramètres.
- Cliquez sur Webhooks, puis sur Add webhook (Ajouter un Webhook).
Dans le champ ID du hook, saisissez un ID pour le webhook.
Dans le champ URL cible, saisissez l'URL du déclencheur Jenkins.
Si vous avez utilisé le jeton facultatif lors de la configuration de votre déclencheur Jenkins, l'URL du déclencheur Jenkins contiendra ce jeton à la fin. Pour éviter que le jeton ne soit divulgué, supprimez-le de la fin de l'URL cible et copiez-le dans le champ Chaîne de requête sensible.
Pour trouver votre jeton dans l'URL de votre déclencheur, recherchez le texte commençant par
token=
Par exemple, si votre URL ressemble à ce qui suit :
https://jenkins-server.com/generic-webhook-trigger/invoke?token=jenkins-job1
Copiez et supprimez la partie commençant par le point d'interrogation
?token=jenkins-job1
dans le champ URL cible. Supprimez ensuite le point d'interrogation initial, puis déplacez la partie restantetoken=jenkins-job1
vers le champ Chaîne de requête sensible.Dans la section Déclencher sur, sélectionnez l'une des options suivantes :
- Push : pour déclencher une action lors d'un transfert push vers le dépôt.
- État de la demande d'extraction modifié : pour déclencher un événement lorsque l'état de la demande d'extraction change.
Si vous avez sélectionné Déployer, vous pouvez saisir une liste d'autorisation pour les événements de déploiement dans le champ Filtre de branche.
Le champ Filtre de branche utilise le modèle glob. Seules les opérations sur les branches correspondantes déclenchent une déclencheur de compilation. Si le champ est vide ou défini sur
*
, les événements push pour toutes les branches sont signalés.Cliquez sur Add webhook (Ajouter un Webhook).
Le webhook s'affiche sur la page Webhooks.
Tester votre webhook
- Sur la page Webhooks de Secure Source Manager, cliquez sur le webhook que vous souhaitez tester.
En bas de la page, cliquez sur Test delivery (Distribution des tests).
Un faux événement est ajouté à la file d'attente de distribution. L'opération peut mettre quelques secondes à s'afficher dans l'historique des livraisons.
Vous pouvez également utiliser une commande
git
pour envoyer ou fusionner une demande d'extraction;extraction afin de tester le webhook.Dans le projet Jenkins, affichez la compilation déclenchée par l'événement de test dans Historique de compilation.
Vous pouvez également afficher la demande et la réponse à la diffusion de test dans la section Diffusions récentes de la page du webhook Secure Source Manager après avoir envoyé votre première diffusion de test.
Étapes suivantes
- Consultez la documentation Jenkins.