Como criar aplicativos Go

Nesta página, explicaremos como usar o Cloud Build para criar um binário Go e enviá-lo para o Cloud Storage. Se você não estiver familiarizado com o Cloud Build, leia os guias de início rápido e a visão geral da configuração do build primeiro.

O Cloud Build permite que você use qualquer imagem de contêiner disponível publicamente para executar suas tarefas. Use a imagem pública golang do DockerHub no arquivo de configuração para criar aplicativos Go.

Antes de começar

Nas instruções desta página, pressupomos que você está familiarizado com Go. Além disso:

  • Você precisará do código-fonte do aplicativo Go.
  • Você precisará de um bucket do Cloud Storage para enviar o binário Go integrado. Para instruções sobre como criar um bucket, consulte Como criar buckets de armazenamento.
  • Para executar os comandos gcloud desta página, instale a ferramenta de linha de comando gcloud.

Como criar usando os módulos do Go

Go 1.11 inclui suporte preliminar para módulos com controle de versão. A imagem golang pública do Docker Hub é compatível com a criação de módulos do Go. Usar essa imagem como uma etapa de build no arquivo de configuração do Cloud Build permite que você invoque comandos go na imagem. Os argumentos transmitidos nessa etapa de build são transmitidos diretamente para a ferramenta golang, o que permite executar qualquer comando go nessa imagem.

Para criar seu aplicativo Go:

  1. (OPCIONAL, caso você não use módulos do Go) Inicialize módulos do Go: no mesmo diretório que contém o código-fonte do aplicativo, execute o seguinte comando para especificar um GOPATH para ativar o uso de módulos do Go:

    go mod init [GOPATH]
    
  2. Crie um arquivo de configuração do Cloud Build chamado cloudbuild.yaml ou cloudbuild.json.

  3. Crie o módulo: no arquivo de configuração, adicione uma etapa de build para invocar o comando go build:

    YAML

    # Build the module.
    steps:
    - name: golang
      args: ['go', 'build', '.']
    

    JSON

    {
       "steps": [
        {
           "name": "golang",
           "args": [
               "go",
               "build",
               "."
            ]
           }
      ]
    }
    
  4. Armazene os artefatos do build: adicione o campo artifacts para armazenar o binário em um bucket do Cloud Storage.

    YAML

    # Build the module.
    steps:
    - name: golang
      args: ['go', 'build', '.']
    artifacts:
      objects:
        location: '[STORAGE_LOCATION]'
        paths: ['[ARTIFACT_PATH]']
    

    JSON

    {
       "steps": [
        {
           "name": "golang",
           "args": [
               "go",
               "build",
               "."
            ]
        }
      ]
      "artifacts": {
        "objects": {
            "location": [
                "[STORAGE_LOCATION]"
            ],
            "paths":
            [
                "[ARTIFACT_PATH]"
    
            ]
        }
      }
    }
    

    Em que,

    • [STORAGE_LOCATION]: é um bucket do Cloud Storage ou uma pasta no bucket em que o Cloud Build precisa armazenar o artefato, como gs://mybucket ou gs://mybucket/some/folder;
    • [ARTIFACT_PATH] é o caminho para um ou mais artefatos.
  5. Inicie a compilação usando o arquivo de configuração da compilação:

    gcloud builds submit --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY]
    

    Em que:

    • [CONFIG_FILE_PATH] é o caminho para o arquivo de configuração da compilação;
    • [SOURCE_DIRECTORY] é o caminho ou o URL do código-fonte.

    Se você não especificar [CONFIG_FILE_PATH] e [SOURCE_DIRECTORY] no comando gcloud builds submit, o Cloud Build presumirá que o arquivo de configuração e o código-fonte estão no diretório de trabalho atual.

A seguir