Crea y actualiza un repositorio

En esta página, se describe cómo crear y actualizar un repositorio con la interfaz web de Secure Source Manager o la API de Secure Source Manager.

Si aún no se creó tu instancia de Secure Source Manager, consulta Crea una instancia de Secure Source Manager para comenzar.

Antes de comenzar

  1. Crea o solicita acceso a una instancia de Secure Source Manager. Para obtener más información, consulta Crea una instancia de Secure Source Manager.
  2. Instala Google Cloud CLI.

  3. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  4. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  5. Instala el componente beta de Google Cloud CLI:
    gcloud components install alpha

Roles obligatorios

Para obtener los permisos que necesitas para crear un repositorio, pídele a tu administrador que te otorgue los siguientes roles de IAM:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Para obtener información sobre cómo otorgar roles de Secure Source Manager, consulta Control de acceso con IAM y Otorga a los usuarios acceso a la instancia.

Crea un repositorio

Interfaz web

  1. Para acceder a la instancia de Secure Source Manager a través de su interfaz web, copia la siguiente URL en la barra de direcciones de tu navegador.

    INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev

    Reemplaza lo siguiente:

    • INSTANCE_ID por el nombre de la instancia.
    • PROJECT_NUMBER por el número de proyecto de la instancia. Google CloudPara obtener información sobre cómo identificar proyectos, consulta Identifica proyectos.
    • LOCATION por la región de la instancia.

  2. Autentícate con tus credenciales de Secure Source Manager si es necesario.

  3. Haz clic en el ícono + Crear repositorio nuevo en el menú de navegación.

  4. Completa los detalles del repositorio:

    1. ID del repositorio: Ingresa un nombre para el repositorio.

    2. Descripción: Opcional: Ingresa una descripción del repositorio.

    3. Rama predeterminada: Nombre de la rama predeterminada.

  5. Cuenta de servicio: Opcional: Ingresa la cuenta de servicio que se asociará con el repositorio. Esta cuenta de servicio administrada por el usuario se usa para integraciones como Cloud Build. Para obtener más información, consulta Conéctate a Cloud Build.

  6. Inicializar repositorio: Opcional: Selecciona esta opción si deseas inicializar el repositorio y agregar archivos .gitignore, de licencia y README.

  7. .gitignore: Opcional: Elige qué archivos no rastrear con las plantillas del menú desplegable.

  8. license: Opcional: Selecciona una licencia común en el menú desplegable.

  9. Haz clic en Crear repositorio.

gcloud

  1. Para crear un repositorio con gcloud CLI, ejecuta el siguiente comando:

    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
    

    Reemplaza lo siguiente:

    • REPOSITORY_ID por el nombre de tu repositorio.

    • LOCATION por la región en la que deseas crear el repositorio. Para obtener más información sobre las ubicaciones admitidas, consulta Ubicaciones.

    • PROJECT_ID por el ID del proyecto de la instancia de Secure Source Manager en la que deseas crear el repositorio.

    • INSTANCE_ID por el ID de la instancia en la que creas el repositorio. Para enumerar las instancias de Secure Source Manager en tu proyecto, consulta Enumera y visualiza instancias.

    • DESCRIPTION por una descripción del repositorio. Esto es opcional y se puede omitir.

    • BRANCH por el nombre de la rama predeterminada. Esto es opcional y se puede omitir. El nombre de la rama predeterminada cuando no se establece es main.

    • GITIGNORES por una lista separada por comas de nombres de plantillas de gitignore. Esto es opcional y se puede omitir. Para ver la lista completa de plantillas disponibles, consulta la referencia de configuración de inicialización del repositorio.

    • LICENSE por el nombre de la plantilla de licencia que se aplicará a tu repositorio. Esto es opcional y se puede omitir. Para ver la lista completa de plantillas de licencia disponibles, consulta la referencia de configuración de inicialización del repositorio.

    • README por default para crear un archivo README a partir de la plantilla predeterminada. Esto es opcional y se puede omitir. Si se omite, no se creará un archivo README.

    • SERVICE_ACCOUNT por la dirección de correo electrónico de la cuenta de servicio que deseas asociar con el repositorio. Esto es opcional y se puede omitir.

API

  1. Para crear un repositorio con una llamada a REST, ejecuta el siguiente comando:

    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"
        }'
    

    Reemplaza lo siguiente:

    • REGION por la región de tu instancia de Secure Source Manager. Para obtener más información sobre las ubicaciones admitidas, consulta Ubicaciones.
    • INSTANCE_ID por el ID de tu instancia de Secure Source Manager.
    • PROJECT_ID por el ID del proyecto de tu instancia de Secure Source Manager. Para obtener más información sobre dónde encontrar el ID de tu proyecto, consulta Identifica proyectos.
    • REPOSITORY_ID por el nombre de tu repositorio.
    • SERVICE_ACCOUNT por la dirección de correo electrónico de la cuenta de servicio que deseas asociar con el repositorio.

    Se pueden especificar valores adicionales con la marca de datos HTTP POST, -d'{}' incluida la inicialización del repositorio, la adición de un archivo específico .gitignore o licencias. Para obtener más información, consulta la documentación de referencia.

    Si deseas que el resultado sea legible, puedes canalizarlo a JSON con json_pp.

    Por ejemplo:

    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 respuesta es similar a la siguiente:

    {
      "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"
        }
    }
    

    Aquí:

    • 654987321654 es el número del proyecto del repositorio.
    • my-project-id es el ID del proyecto del repositorio.
    • my-repo es el REPOSITORY_ID que estableciste en el comando create. El campo uris contiene las URLs para acceder al repositorio a través del navegador web o a través del acceso HTTPS del protocolo Git.
  2. Accede a tu repositorio nuevo con el URI HTML en la respuesta. La revisión de código, el seguimiento de problemas y las solicitudes de extracción son compatibles con la interfaz web de Secure Source Manager.

El repositorio se crea en tu instancia de Secure Source Manager.

Cuando creas un repositorio nuevo, se te otorga el rol de administrador de repositorios (roles/securesourcemanager.repoAdmin). El nuevo permiso de IAM puede tardar hasta 2 minutos en propagarse, por lo que, si recibes un error de permisos cuando intentas acceder al repositorio después de la creación, espera unos minutos y vuelve a intentarlo.

Los repositorios que creaste se enumeran en la interfaz web de Secure Source Manager en la página Mis repositorios.

Actualiza un repositorio

Interfaz web

  1. Ve a la página del repositorio en la interfaz web de Secure Source Manager.
  2. Haz clic en Configuración del repositorio en el menú de navegación.
  3. En la sección Configuración básica, ingresa la dirección de correo electrónico de la cuenta de servicio en el campo Cuenta de servicio.
  4. Haz clic en Guardar cambios.

gcloud

  1. Para actualizar la cuenta de servicio del repositorio, ejecuta el siguiente comando:

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

    Reemplaza lo siguiente:

    • REPOSITORY_ID por el nombre del repositorio que deseas actualizar.
    • LOCATION por la región en la que se encuentra el repositorio.
    • PROJECT_ID por el ID del proyecto.
    • SERVICE_ACCOUNT por la dirección de correo electrónico de la cuenta de servicio que deseas asociar con el repositorio.

API

  1. Para actualizar la cuenta de servicio del repositorio con una llamada a REST, ejecuta el siguiente comando:

    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"}'
    

    Reemplaza lo siguiente:

    • PROJECT_ID por el ID del proyecto.
    • REGION por la región.
    • REPOSITORY_ID por el ID del repositorio.
    • SERVICE_ACCOUNT por el correo electrónico de la cuenta de servicio.

¿Qué sigue?