Aller au contenu principal

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

  1. Aller dans Source Repositories
  2. Cliquer "Add repository"
  3. Choisir "Create new repository"
  4. 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

OptionDescription
Automatic syncSynchronisation toutes les minutes
Manual syncSynchronisation manuelle
WebhooksDé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


← Retour à la table des matières