Como iniciar versões manualmente

Nesta página, descrevemos como iniciar uma versão no Cloud Build manualmente usando a ferramenta de linha de comando gcloud e a API Cloud Build.

Antes de começar

Como executar versões

Console

Não é possível iniciar manualmente uma nova versão usando o Console do Google Cloud Platform. No entanto, é possível tentar novamente uma versão anterior.

Para recriar:

  1. Abra a página Histórico de versões na seção Cloud Build no Console do Google Cloud Platform.

    Abrir a página "Histórico da versão"

  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

Como usar 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 versão usando seu Dockerfile, execute o comando abaixo no diretório que contém o código do aplicativo, o Dockerfile e outros recursos:

gcloud builds submit --tag gcr.io/[PROJECT_ID]/[IMAGE_NAME] .

em que:

  • [PROJECT_ID] é o nome do seu projeto do GCP.
  • [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 seu código de aplicativo, Dockerfile, e quaisquer outros recursos no diretório atual conforme indicado por .;
  • carrega os arquivos em um intervalo do Cloud Storage;
  • inicia uma versão usando os arquivos carregados como entrada;
  • adiciona tags à imagem usando o nome fornecido;
  • envia a imagem criada para o 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

$BUILD_ID é o identificador exclusivo da versão.

Como usar o arquivo de configuração de versão 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]

em que:

  • [BUILD_CONFIG] é o caminho para o arquivo de configuração de versão;
  • [SOURCE_CODE] é o caminho ou o código-fonte do URL.

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

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

Você pode usar . 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 quiser excluir alguns arquivos do diretório, inclua um arquivo chamado .gcloudignore no diretório de upload de nível superior. Os arquivos que ele especificar serão ignorados. Se nenhum arquivo .gcloudignore estiver presente no diretório de upload de nível superior, mas um arquivo .gitignore estiver, a ferramenta gcloud gerará um arquivo .gcloudignore compatível com Git que respeite seus arquivos .gitignore-ed. Para ver mais informações, consulte a documentação do gcloudignore.

Se você não tiver o código-fonte para informar à versão, use a sinalização --no-source.

    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 este 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 versão, o Cloud Build chama a etapa de versã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 do nome do registro.

    A origem do código para a versão está em um arquivo tar compactado, node-docker-example.tar.gz. O arquivo é armazenado em um intervalo do Cloud Storage chamado cloud-build-examples.

  2. Execute este comando:

    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
    

    em que [PROJECT-ID] é o código do projeto do GCP.

    Neste comando, curl envia request.json em uma chamada POST para o endpoint builds referente ao 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"
            }
        }
    }
    

    A resposta JSON é modelada usando o recurso Operation na API do Cloud Build. O campo metadata é modelado usando o recurso Build. O status QUEUED indica que a versão está aguardando execução.

A seguir

Enviar comentários sobre…