Como iniciar builds manualmente

Nesta página, descrevemos como iniciar um build manualmente no Cloud Build usando a ferramenta de linha de comando gcloud e a API Cloud Build.

Antes de começar

Permissões do IAM obrigatórias

Para instruções sobre a concessão de papéis do IAM, consulte Configurar o acesso para membros do projeto.

Como executar versões

Console

Não é possível iniciar manualmente um novo build usando o Console do Google Cloud. No entanto, é possível repetir um build anterior.

Para repetir uma build anterior:

  1. Abra a página Histórico do build na seção Cloud Build do Console do Google Cloud.

    Abrir a página "Histórico da build"

  2. Selecione o projeto e clique em Abrir.

  3. Na página Histórico de versões, clique em uma versão que você queira recriar.

  4. Clique em Recriar.

gcloud

Usando um Dockerfile:

O Dockerfile contém todas as informações necessárias para criar uma imagem do Docker usando o Cloud Build.

Para executar uma solicitação de build usando o Dockerfile, execute o seguinte comando no diretório que contém o código do aplicativo Dockerfile e outros recursos:

gcloud builds submit --tag gcr.io/project-id/image-name .

Onde:

  • project-id é o nome do projeto do Cloud;
  • image-name é a imagem a ser criada;
  • . especifica que o código-fonte está no diretório de trabalho atual.

O nome completo da imagem a ser criada é `gcr.io/project-id/image-name. As imagens enviadas ao Container Registry usam o formato do nome do registro.

O comando gcloud builds submit:

  • compacta o código do aplicativo Dockerfile e todos os outros recursos no diretório atual, conforme indicado por .;
  • carrega os arquivos em um bucket do Cloud Storage;
  • inicia uma build usando os arquivos enviados como entrada;
  • marca a imagem usando o nome fornecido
  • envia a imagem criada ao Container Registry.

À medida que a versão avança, a saída é exibida no shell ou na janela do terminal: Quando a versão for concluída, você verá um resultado semelhante a este:

    DONE
    ---------------------------------------------------------------------------------
    ID                                    CREATE_TIME                DURATION STATUS
    $BUILD_ID                             2016-10-28T15:21:18+00:00  12S      SUCCESS

em que $BUILD_ID é o identificador exclusivo da sua build.

Usando o arquivo de configuração de build do Cloud Build:

Para enviar uma versão usando a configuração de versão, execute este comando:

    gcloud builds submit --config build-config source-code

onde:

  • build-config é o caminho para o arquivo de configuração da compilação;
  • source-code é o caminho ou o código-fonte do URL.

Por exemplo, o comando a seguir envia a solicitação de build cloudbuild.yaml usando o código-fonte arquivado que foi armazenado em um bucket do Cloud Storage.

    gcloud builds submit --config cloudbuild.yaml \
        gs://cloud-build-examples/node-docker-example.tar.gz

Use . para especificar que o código-fonte está no diretório de trabalho atual:

    gcloud builds submit --config cloudbuild.yaml .

gcloudignore: ao incluir o código-fonte da versão, o comando acima carrega todos os arquivos no diretório especificado para criação no Google Cloud Platform. Se você quiser excluir determinados arquivos do diretório, inclua um arquivo chamado .gcloudignore no diretório de upload de nível superior. Os arquivos especificados por ele serão ignorados. Se nenhum arquivo .gcloudignore estiver presente no diretório de upload de nível superior, mas houver um .gitignore, a ferramenta gcloud gerará um arquivo .gcloudignore compatível com o Git que respeita os arquivos com .gitignore. Para mais informações, consulte a documentação de gcloudignore.

Se você não tiver o código-fonte para informar sua versão, use a sinalização --no-source, em que build-config é o caminho para o arquivo de configuração da criação:

    gcloud builds submit --config build-config --no-source

API

Para enviar a solicitação de versão usando curl:

  1. Crie um arquivo chamado request.json com o seguinte conteúdo:

    {
        "source": {
            "storageSource": {
                "bucket": "cloud-build-examples",
                "object": "node-docker-example.tar.gz"
            }
        },
        "steps": [{
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/$PROJECT_ID/my-image",
                "."
            ]
        }],
        "images": [
            "gcr.io/$PROJECT_ID/my-image"
        ]
    }
    

    Nesta solicitação de build, o Cloud Build chama a etapa de criação docker com os argumentos build -t gcr.io/$PROJECT_ID/cb-demo-img ..

    O nome completo da imagem a ser criada é gcr.io/$PROJECT_ID/cb-demo-img. As imagens enviadas ao Container Registry usam o formato de nome do registro.

    O código-fonte do build está em um arquivo tar compactado: node-docker-example.tar.gz. O arquivo é armazenado em um bucket do Cloud Storage chamado cloud-build-examples.

  2. Execute o seguinte comando, em que project-id é o ID do projeto no Cloud:

    curl -X POST -T request.json -H "Authorization: Bearer $(gcloud config config-helper \
        --format='value(credential.access_token)')" \
        https://cloudbuild.googleapis.com/v1/projects/project-id/builds
    

    Neste comando, curl envia request.json em uma chamada POST para o endpoint builds no método da API projects.builds.create.

    O comando exibe detalhes sobre sua versão no shell ou na janela do terminal. O resultado é uma resposta JSON semelhante a esta:

    {
        "name": "operations/build/$PROJECT-ID/NmZhZW...",
        "metadata": {
            "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata",
            "build": {
                "id": $BUILD-ID,
                "status": "QUEUED",
                "source": {
                    "storageSource": {
                        "bucket": "cloud-build-examples",
                        "object": "node-docker-example.tar.gz"
                    }
                },
                "createTime": "2017-05-12T18:58:07.341526Z",
                "steps": [
                {
                    "name": "gcr.io/cloud-builders/docker",
                    "args": [
                        "build",
                        "-t",
                        "gcr.io/$PROJECT-ID/cb-demo-img",
                        "."
                    ]
                }
                ],
                "timeout": "600s",
                "images": [
                    "gcr.io/$PROJECT-ID/cb-demo-img"
                ],
                "projectId": $PROJECT-ID,
                "logsBucket": "gs://...",
                "sourceProvenance": {
                    "resolvedStorageSource": {
                        "bucket": "cloud-build-examples",
                        "object": "node-docker-example.tar.gz",
                        "generation": "..."
                    }
                },
                "logUrl": "https://console.cloud.google.com/gcr/builds/...?project=$PROJECT-ID"
            }
        }
    }
    

    O modelo da resposta JSON é baseado no recurso Operation na API Cloud Build. O modelo do campo metadata é baseado no recurso Build. O status QUEUED indica que o build está aguardando execução.

A seguir