Compila aplicaciones de Go

En esta página, se explica cómo usar Cloud Build para compilar un objeto binario de Go y enviarlo a Cloud Storage. Si estás dando los primeros pasos en Cloud Build, lee primero las guías de inicio rápido y la descripción general de la configuración de compilación.

Cloud Build permite usar cualquier imagen de contenedor disponible a nivel público para ejecutar tareas. Puedes usar la imagen pública golang de DockerHub en el archivo de configuración para compilar tus aplicaciones de Go.

Antes de comenzar

En las instrucciones de esta página, se da por hecho que estás familiarizado con Go. Además, ten en cuenta la siguiente información:

Compila mediante módulos de Go

Go 1.11 incluye compatibilidad preliminar para los módulos con versión. La imagen golang pública de Docker Hub es compatible con la compilación mediante módulos de Go. Usar esta imagen como un paso de compilación en el archivo de configuración de Cloud Build te permite invocar comandos de go dentro de la imagen. Los argumentos que se pasan a este paso de compilación se pasan directamente a la herramienta golang, lo que te permite ejecutar cualquier comando de go en esta imagen.

Para compilar la aplicación de Go, sigue estos pasos:

  1. Inicializa los módulos de Go: En el mismo directorio que contiene el código fuente de la aplicación, ejecuta el siguiente comando a fin de especificar GOPATH para habilitar el uso de Módulos de Go (opcional, si no estás usando los módulos de Go):

    go mod init [GOPATH]
    
  2. Crea un archivo de configuración de Cloud Build con el nombre cloudbuild.yaml o cloudbuild.json.

  3. Compila el módulo: En el archivo de configuración, agrega un paso de compilación para invocar el comando go build:

    YAML

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

    JSON

    {
       "steps": [
        {
           "name": "golang",
           "args": [
               "go",
               "build",
               "."
            ]
           }
      ]
    }
    
  4. Almacena los artefactos de compilación: Agrega el campo artifacts para almacenar el objeto binario en un depósito de 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]"
    
            ]
        }
      }
    }
    

    En donde,

    • [STORAGE_LOCATION]: Un depósito de Cloud Storage o una carpeta dentro del depósito donde Cloud Build debe almacenar el artefacto, como gs://mybucket o gs://mybucket/some/folder.
    • [ARTIFACT_PATH]: ruta a uno o más artefactos
  5. Para comenzar a compilar mediante el archivo de configuración de compilación, ejecuta el siguiente comando:

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

    En el ejemplo anterior, se ilustra lo siguiente:

    • [CONFIG_FILE_PATH] es la ruta de acceso al archivo de configuración de compilación.
    • [SOURCE_DIRECTORY] es la ruta o la URL del código fuente.

    Si se no especifica [CONFIG_FILE_PATH] ni [SOURCE_DIRECTORY] en el comando gcloud builds submit, Cloud Build da por hecho que el archivo de configuración y el código fuente están en el directorio de trabajo actual.

Qué sigue