Créer et mettre à jour un dépôt

Cette page explique comment créer et mettre à jour un dépôt à l'aide de l'interface Web ou de l'API Secure Source Manager.

Si votre instance Secure Source Manager n'a pas encore été créée, consultez Créer une instance Secure Source Manager pour commencer.

Avant de commencer

  1. Créez une instance Secure Source Manager ou demandez-y l'accès. Pour en savoir plus, consultez Créer une instance Secure Source Manager.
  2. Installez la Google Cloud CLI.

  3. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  4. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  5. Installez le composant beta de la Google Cloud CLI :
    gcloud components install alpha

Rôles requis

Pour obtenir les autorisations nécessaires pour créer un dépôt, demandez à votre administrateur de vous accorder les rôles IAM suivants :

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 via des rôles personnalisés ou d'autres rôles prédéfinis.

Pour en savoir plus sur l'attribution de rôles Secure Source Manager, consultez Contrôle des accès avec IAM et Accorder aux utilisateurs l'accès à une instance.

Créer un dépôt

Interface Web

  1. Pour accéder à l'instance Secure Source Manager via son interface Web, copiez l'URL suivante dans la barre d'adresse de votre navigateur.

    INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev

    Remplacez les éléments suivants :

    • INSTANCE_ID par le nom de l'instance.
    • PROJECT_NUMBER par le numéro de projet de l'instance Google Cloud. Pour en savoir plus sur l'identification des projets, consultez Identifier des projets.
    • LOCATION par la région de l'instance.

  2. Authentifiez-vous à l'aide de vos identifiants Secure Source Manager si nécessaire.

  3. Cliquez sur l'icône + Créer un dépôt dans le menu de navigation.

  4. Renseignez les informations sur le dépôt :

    1. ID du dépôt : saisissez un nom pour le dépôt.

    2. Description : facultatif : saisissez une description du dépôt.

    3. Branche par défaut : nom de la branche par défaut.

  5. Compte de service : facultatif : saisissez le compte de service à associer au dépôt. Ce compte de service géré par l'utilisateur est utilisé pour les intégrations telles que Cloud Build. Pour en savoir plus, consultez Se connecter à Cloud Build.

  6. Initialiser le dépôt : facultatif : sélectionnez cette option si vous souhaitez initialiser le dépôt et ajouter les fichiers .gitignore, de licence et README.

  7. .gitignore : facultatif : choisissez les fichiers à ne pas suivre à l'aide des modèles de menu déroulant.

  8. Licence : facultatif : sélectionnez une licence courante dans le menu déroulant.

  9. Cliquez sur Créer un dépôt.

gcloud

  1. Créez un dépôt à l'aide de la gcloud CLI en exécutant la commande suivante :

    gcloud source-manager repos create REPOSITORY_ID \
        --region=LOCATION \
        --project=PROJECT_ID \
        --instance=INSTANCE_ID \
        --description=DESCRIPTION \
        --default-branch=BRANCH \
        --gitignores=GITIGNORES \
        --license=LICENSE \
        --readme=README \
        --service-account=SERVICE_ACCOUNT
    

    Remplacez les éléments suivants :

    • REPOSITORY_ID par le nom de votre dépôt.

    • LOCATION par la région dans laquelle vous souhaitez créer le dépôt. Pour en savoir plus sur les régions compatibles, consultez la section Régions.

    • PROJECT_ID par l'ID du projet de l'instance Secure Source Manager dans laquelle vous souhaitez créer le dépôt.

    • INSTANCE_ID par l'ID d'instance de l'instance dans laquelle vous créez le dépôt. Pour répertorier les instances Secure Source Manager de votre projet, consultez Répertorier et afficher les instances.

    • DESCRIPTION par une description du dépôt. Ce champ est facultatif et peut être omis.

    • BRANCH par le nom de la branche par défaut. Ce champ est facultatif et peut être omis. Lorsque le nom de la branche par défaut n'est pas défini, il est main.

    • GITIGNORES par une liste de noms de modèles gitignore séparés par une virgule. Ce champ est facultatif et peut être omis. Pour afficher la liste complète des modèles disponibles, consultez la documentation de référence sur la configuration de l'initialisation du dépôt.

    • LICENSE par le nom du modèle de licence à appliquer à votre dépôt. Ce champ est facultatif et peut être omis. Pour afficher la liste complète des modèles de licence disponibles, consultez la documentation de référence sur la configuration de l'initialisation du dépôt.

    • README par default pour créer un fichier README à partir du modèle par défaut. Ce champ est facultatif et peut être omis. Si vous l'omettez, aucun fichier README ne sera créé.

    • SERVICE_ACCOUNT par l'adresse e-mail du compte de service que vous souhaitez associer au dépôt. Ce champ est facultatif et peut être omis.

API

  1. Créez un dépôt à l'aide d'un appel REST en exécutant la commande suivante :

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/repositories?repository_id=REPOSITORY_ID \
        -d '{
          "instance": "projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID",
          "serviceAccount": "SERVICE_ACCOUNT"
        }'
    

    Remplacez les éléments suivants :

    • REGION par la région de votre instance Secure Source Manager. Pour en savoir plus sur les régions compatibles, consultez la section Régions.
    • INSTANCE_ID par l'ID de votre instance Secure Source Manager.
    • PROJECT_ID par l'ID du projet de votre instance Secure Source Manager. Pour en savoir plus sur l'emplacement de votre ID du projet, consultez Identifier des projets.
    • REPOSITORY_ID par le nom de votre dépôt.
    • SERVICE_ACCOUNT par l'adresse e-mail du compte de service que vous souhaitez associer au dépôt.

    Vous pouvez spécifier des valeurs supplémentaires à l'aide de l'indicateur de données HTTP POST, -d'{}' y compris l'initialisation du dépôt, l'ajout d'un fichier spécifique .gitignore ou des licences. Pour en savoir plus, consultez la documentation de référence.

    Si vous souhaitez que votre sortie soit lisible par l'humain, vous pouvez la rediriger vers JSON à l'aide de json_pp.

    Exemple :

    curl \
        -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/my-project-id/locations/us-central1/repositories?repository_id=my-repo \
        -d '{
          "instance": "projects/my-project-id/locations/us-central1/instances/prod-test-instance",
          "serviceAccount": "my-service-account@my-project-id.iam.gserviceaccount.com",
          "initialConfig": {
            "defaultBranch": "main"
          }
        }' | json_pp
    

    La réponse se présente comme suit :

    {
      "name": "operations/266bf4c7-13fe-11ed-be24-da823b7355d0",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata",
        "createTime": "2022-08-04T14:02:59.810496928Z",
        "endTime": "2022-08-04T14:03:00.558354528Z",
        "target": "projects/654987321654/locations/us-central1/repositories/my-repo",
        "verb": "create",
        "apiVersion": "v1"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.Repository",
        "name": "projects/my-project-id/locations/us-central1/repositories/my-repo",
        "instance": "projects/654987321654/locations/us-central1/instances/prod-test-instance",
        "serviceAccount": "my-service-account@my-project-id.iam.gserviceaccount.com",
        "createTime": "2022-08-04T14:03:00Z",
        "uris": {
          "html": "https://prod-test-instance-654987321654.us-central1.sourcemanager.dev/my-project-id/my-repo",
          "gitHttps": "https://prod-test-instance-654987321654-git.us-central1.sourcemanager.dev/my-project-id/my-repo.git"
        }
    }
    

    Où :

    • 654987321654 correspond au numéro de projet du dépôt.
    • my-project-id correspond à l'ID du projet du dépôt.
    • my-repo correspond à REPOSITORY_ID que vous avez défini dans la commande de création. Le champ uris contient les URL permettant d'accéder au dépôt via le navigateur Web ou via l'accès HTTPS au protocole Git.
  2. Accédez à votre nouveau dépôt avec l'URI HTML dans la réponse. La revue de code, le suivi des problèmes et les requêtes d'extraction sont compatibles avec l'interface Web Secure Source Manager.

Le dépôt est créé dans votre instance Secure Source Manager.

Lorsque vous créez un dépôt, le rôle Administrateur de dépôt (roles/securesourcemanager.repoAdmin) vous est attribué. La propagation de la nouvelle autorisation IAM peut prendre jusqu'à deux minutes. Par conséquent, si vous recevez une erreur d'autorisation lorsque vous essayez d'accéder au dépôt après sa création, attendez quelques minutes, puis réessayez.

Les dépôts que vous avez créés sont listés dans l'interface Web Secure Source Manager sur la page Mes dépôts.

Mettre à jour un dépôt

Interface Web

  1. Accédez à la page du dépôt dans l'interface Web Secure Source Manager.
  2. Cliquez sur Paramètres du dépôt dans le menu de navigation.
  3. Dans la section Paramètres de base, saisissez l'adresse e-mail du compte de service dans le champ Compte de service.
  4. Cliquez sur Enregistrer les modifications.

gcloud

  1. Pour mettre à jour le compte de service du dépôt, exécutez la commande suivante :

    gcloud source-manager repos update REPOSITORY_ID \
        --region=LOCATION \
        --project=PROJECT_ID \
        --service-account=SERVICE_ACCOUNT
    

    Remplacez les éléments suivants :

    • REPOSITORY_ID par le nom du dépôt que vous souhaitez mettre à jour.
    • LOCATION par la région dans laquelle se trouve le dépôt.
    • PROJECT_ID avec l'ID du projet.
    • SERVICE_ACCOUNT par l'adresse e-mail du compte de service que vous souhaitez associer au dépôt.

API

  1. Pour mettre à jour le compte de service du dépôt à l'aide d'un appel REST, exécutez la commande suivante :

    curl --request PATCH \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/repositories/REPOSITORY_ID?updateMask=serviceAccount \
        -d '{"serviceAccount": "SERVICE_ACCOUNT"}'
    

    Remplacez les éléments suivants :

    • PROJECT_ID avec l'ID du projet.
    • REGION par la région.
    • REPOSITORY_ID par l'ID du dépôt.
    • SERVICE_ACCOUNT par l'adresse e-mail du compte de service.

Étape suivante