Criar e atualizar um repositório

Esta página descreve como criar e atualizar um repositório usando a interface da Web ou a API do Secure Source Manager.

Se a instância do Secure Source Manager ainda não foi criada, consulte Criar uma instância do Secure Source Manager para começar.

Antes de começar

  1. Crie ou solicite acesso a uma instância do Secure Source Manager. Para mais informações, consulte Criar uma instância do Secure Source Manager.
  2. Instale a Google Cloud CLI.

  3. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  4. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  5. Instale o componente beta da Google Cloud CLI:
    gcloud components install alpha

Funções exigidas

Para ter as permissões necessárias para criar um repositório, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Para informações sobre como conceder papéis do Secure Source Manager, consulte Controle de acesso com o IAM e Conceder acesso de instância aos usuários.

Criar um repositório

Interface da Web

  1. Para acessar a instância do Secure Source Manager pela interface da Web, copie o URL a seguir na barra de endereço do navegador.

    INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev

    Substitua:

    • INSTANCE_ID pelo nome da instância.
    • PROJECT_NUMBER pelo número do projeto da instância. Google CloudPara informações sobre como identificar projetos, consulte Identificar projetos.
    • LOCATION pela região da instância.

  2. Autentique-se usando suas credenciais do Secure Source Manager, se necessário.

  3. Clique no ícone + Criar novo repositório no menu de navegação.

  4. Preencha os detalhes do repositório:

    1. ID do repositório: insira um nome para o repositório.

    2. Descrição: opcional: insira uma descrição do repositório.

    3. Ramificação padrão: nome da ramificação padrão.

  5. Conta de serviço: opcional: insira a conta de serviço a ser associada ao repositório. Essa conta de serviço gerenciado pelo usuário é usada para integrações como o Cloud Build. Para mais informações, consulte Conectar ao Cloud Build.

  6. Inicializar repositório: opcional: selecione essa opção se quiser inicializar o repositório e adicionar arquivos .gitignore, de licença e README.

  7. .gitignore: opcional: escolha quais arquivos não rastrear usando os modelos de menu suspenso.

  8. Licença: opcional: selecione uma licença comum no menu suspenso.

  9. Clique em Criar repositório.

gcloud

  1. Crie um repositório usando a CLI gcloud executando o seguinte 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
    

    Substitua:

    • REPOSITORY_ID pelo nome do repositório.

    • LOCATION pela região em que você quer criar o repositório. Para mais informações sobre os locais com suporte, consulte Locais.

    • PROJECT_ID pelo ID do projeto da instância do Secure Source Manager em que você quer criar o repositório.

    • INSTANCE_ID pelo ID da instância em que você está criando o repositório. Para listar as instâncias do Secure Source Manager no seu projeto, consulte Listar e visualizar instâncias.

    • DESCRIPTION por uma descrição do repositório. Isso é opcional e pode ser omitido.

    • BRANCH pelo nome da ramificação padrão. Isso é opcional e pode ser omitido. O nome da ramificação padrão, quando não definido, é main.

    • GITIGNORES por uma lista separada por vírgulas de nomes de modelos gitignore. Isso é opcional e pode ser omitido. Para conferir a lista completa de modelos disponíveis, consulte a referência de configuração de inicialização do repositório.

    • LICENSE pelo nome do modelo de licença a ser aplicado ao repositório. Isso é opcional e pode ser omitido. Para conferir a lista completa de modelos de licença disponíveis, consulte a referência de configuração de inicialização do repositório.

    • README com default para criar um arquivo README com base no modelo padrão. Isso é opcional e pode ser omitido. Se omitido, um arquivo README não será criado.

    • SERVICE_ACCOUNT pelo endereço de e-mail da conta de serviço que você quer associar ao repositório. Isso é opcional e pode ser omitido.

API

  1. Crie um repositório usando uma chamada REST executando o seguinte 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"
        }'
    

    Substitua:

    • REGION pela região da instância do Secure Source Manager. Para mais informações sobre os locais com suporte, consulte Locais.
    • INSTANCE_ID pelo ID da instância do Secure Source Manager.
    • PROJECT_ID pelo ID do projeto da instância do Secure Source Manager. Para mais informações sobre onde encontrar o ID do projeto, consulte Identificar projetos.
    • REPOSITORY_ID pelo nome do repositório.
    • SERVICE_ACCOUNT pelo endereço de e-mail da conta de serviço que você quer associar ao repositório.

    Outros valores podem ser especificados usando a flag de dados HTTP POST, -d'{}' incluindo a inicialização do repositório, a adição de um arquivo específico .gitignore ou licenças. Para mais informações, consulte a documentação de referência.

    Se você quiser que a saída seja legível por humanos, poderá canalizá-la para JSON usando json_pp.

    Exemplo:

    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
    

    A resposta será semelhante a esta:

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

    Em que:

    • 654987321654 é o número do projeto do repositório.
    • my-project-id é o ID do projeto do repositório.
    • my-repo é o REPOSITORY_ID definido no comando de criação. O campo uris contém os URLs para acessar o repositório pelo navegador da Web ou pelo acesso HTTPS do protocolo Git.
  2. Acesse seu novo repositório com o URI HTML na resposta. A revisão de código, o rastreamento de problemas e as solicitações pull são compatíveis com a interface da Web do Secure Source Manager.

O repositório é criado na instância do Secure Source Manager.

Ao criar um novo repositório, você recebe o papel de administrador do repositório (roles/securesourcemanager.repoAdmin). A nova permissão do IAM pode levar até dois minutos para ser propagada. Portanto, se você receber um erro de permissões ao tentar acessar o repositório após a criação, aguarde alguns minutos e tente novamente.

Os repositórios criados são listados na interface da Web do Secure Source Manager na página Meus repositórios.

Atualizar um repositório

Interface da Web

  1. Acesse a página do repositório na interface da Web do Secure Source Manager.
  2. Clique em Configurações do repositório no menu de navegação.
  3. Na seção Configurações básicas, insira o endereço de e-mail da conta de serviço no campo Conta de serviço.
  4. Clique em Salvar alterações.

gcloud

  1. Para atualizar a conta de serviço do repositório, execute o seguinte comando:

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

    Substitua:

    • REPOSITORY_ID pelo nome do repositório que você quer atualizar.
    • LOCATION pela região em que o repositório está localizado.
    • PROJECT_ID pelo ID do projeto.
    • SERVICE_ACCOUNT pelo endereço de e-mail da conta de serviço que você quer associar ao repositório.

API

  1. Para atualizar a conta de serviço do repositório usando uma chamada REST, execute o seguinte 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"}'
    

    Substitua:

    • PROJECT_ID pelo ID do projeto.
    • REGION pela região.
    • REPOSITORY_ID pelo ID do repositório.
    • SERVICE_ACCOUNT pelo e-mail da conta de serviço.

A seguir