Cloud Source Repositories
1 - Présentation
Cloud Source Repositories (CSR) fournit des repositories Git privés hébergés sur Google Cloud.
2 - Créer un repository
2.1 Via gcloud
# Créer un repo
gcloud source repos create mon-app
# Lister les repos
gcloud source repos list
# Cloner le repo
gcloud source repos clone mon-app
2.2 Via Console
- Aller dans Source Repositories
- Cliquer "Add repository"
- Choisir "Create new repository"
- Nommer le repo
3 - Authentification
3.1 Credential Helper
# Configurer l'authentification
git config --global credential.https://source.developers.google.com.helper gcloud.sh
# Cloner avec HTTPS
git clone https://source.developers.google.com/p/mon-projet/r/mon-app
3.2 SSH
# Générer une clé SSH (si nécessaire)
ssh-keygen -t ed25519 -C "[email protected]"
# Ajouter la clé publique dans Cloud Console
# IAM & Admin > SSH Keys
# Cloner avec SSH
git clone ssh://[email protected]@source.developers.google.com:2022/p/mon-projet/r/mon-app
4 - Mirroring
4.1 Depuis GitHub
# Configurer le mirroring via Console
# 1. Source Repositories > Add repository
# 2. Connect external repository
# 3. Autoriser GitHub
# 4. Sélectionner le repo à mirrorer
4.2 Configuration
| Option | Description |
|---|---|
| Automatic sync | Synchronisation toutes les minutes |
| Manual sync | Synchronisation manuelle |
| Webhooks | Déclenchement via webhooks GitHub |
4.3 Avantages du mirroring
- Triggers Cloud Build natifs
- Intégration avec les services GCP
- Backup du code sur GCP
- Pas besoin de changer de workflow
5 - Build Triggers
5.1 Créer un trigger
# Trigger sur push
gcloud builds triggers create cloud-source-repositories \
--name="build-on-push" \
--repo="mon-app" \
--branch-pattern="^main$" \
--build-config="cloudbuild.yaml"
# Trigger sur tag
gcloud builds triggers create cloud-source-repositories \
--name="build-on-tag" \
--repo="mon-app" \
--tag-pattern="^v.*" \
--build-config="cloudbuild.yaml"
5.2 Trigger GitHub
# Connecter GitHub
gcloud builds triggers create github \
--name="github-trigger" \
--repo-owner="MonOrg" \
--repo-name="mon-app" \
--branch-pattern="^main$" \
--build-config="cloudbuild.yaml"
5.3 Trigger Pull Request
gcloud builds triggers create github \
--name="pr-trigger" \
--repo-owner="MonOrg" \
--repo-name="mon-app" \
--pull-request-pattern="^main$" \
--build-config="cloudbuild-pr.yaml" \
--comment-control="COMMENTS_ENABLED"
6 - Bonnes pratiques
6.1 Structure de branches
6.2 Protection des branches
Cloud Source Repositories n'a pas de branch protection native comme GitHub.
Alternatives :
- Utiliser GitHub/GitLab avec mirroring
- Implémenter des checks dans Cloud Build
- Utiliser des hooks côté serveur
6.3 Intégration CI
# cloudbuild.yaml - Validation PR
steps:
- name: 'gcr.io/cloud-builders/npm'
args: ['ci']
- name: 'gcr.io/cloud-builders/npm'
args: ['run', 'lint']
- name: 'gcr.io/cloud-builders/npm'
args: ['test']
7 - Migration depuis GitHub/GitLab
7.1 Import initial
# Cloner le repo source
git clone https://github.com/MonOrg/mon-app.git
cd mon-app
# Créer le repo CSR
gcloud source repos create mon-app
# Ajouter le remote GCP
git remote add google https://source.developers.google.com/p/mon-projet/r/mon-app
# Push vers GCP
git push google --all
git push google --tags
7.2 Synchronisation continue
Recommandé : utiliser le mirroring automatique plutôt que de gérer deux remotes.
Résumé
Dans ce chapitre, nous avons appris :
- La création de repositories
- L'authentification (HTTPS, SSH)
- Le mirroring depuis GitHub/GitLab
- Les Build Triggers
- Les bonnes pratiques
Prochaine étape
Dans le prochain chapitre, nous verrons Cloud Build en détail.
→ Chapitre suivant : Cloud Build