Skip to main content

Crear y probar Go

Puedes crear un flujo de trabajo de integración continua (IC) para compilar y probar tu proyecto de Go.

Nota: Los ejecutores hospedados en GitHub no son compatibles con GitHub Enterprise Server actualmente. Puedes encontrar más información sobre el soporte que se tiene planeado en el futuro en el Itinerario público de GitHub.

Introducción

Esta guía te muestra cómo compilar, probar y publicar un paquete de Go.

Los ejecutores hospedados en GitHub tienen un caché de herramientas con software preinstalado, el cual incluye las dependencias para Go. Para encontrar una lista completa de software actualizado y las versiones preinstaladas de Go, consulta la sección "Acerca de los ejecutores hospedados en GitHub".

Prerrequisitos

Ya debes estar familiarizado con la sintaxis de YAML y con cómo se utiliza con GitHub Actions. Para obtener más información, consulta la sección "Sintaxis de flujo de trabajo para las GitHub Actions".

Te recomendamos que tener un entendimiento básico del lenguaje de Go. Para obtener más información, consulta la sección Iniciar con Go.

Utilizar el flujo de trabajo inicial de Go

GitHub proporciona un flujo de trabajo inicial de Go que debería funcionar con la mayoría de los proyectos de Go. Esta guía incluye ejemplos que puedes utilizar para personalizar los flujos de trabajo iniciales. Para obtener más información, consulta el flujo de trabajo inicial de Go.

Para comenzar rápidamente, agrega el flujo de trabajo inicial al directorio de .github/workflows de tu repositorio.

YAML
name: Go package

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Set up Go
        uses: actions/setup-go@v2
        with:
          go-version: 1.15

      - name: Build
        run: go build -v ./...

      - name: Test
        run: go test -v ./...

Especificar una versión de Go

La forma más fácil de especificar una versión de Go es utilizando la acción setup-go que proporciona GitHub. Para obtener más información, consulta la acción de setup-go.

Para utilizar una versión preinstalada de Go en un ejecutor hospedado en GitHub, pasa la versión relevante a la propiedad go-version de la acción setup-go. Esta acción encuentra una versión específica de Go desde el caché de herramientas en cada ejecutor y agrega los binarios necesarios a PATH. Estos cambios persistirán para el recordatorio del job.

La acción setup-go es la forma recomendada de utilizar Go con las GitHub Actions, ya que esta ayuda a garantizar el comportamiento consistente a lo largo de los diferentes ejecutores y versiones de Go. Si estás utilizando un ejecutor auto-hospedado, debes instalar Go y agregarlo a PATH.

Utilizar versiones múltiples de Go

YAML
name: Go

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      matrix:
        go-version: [ '1.14', '1.15', '1.16.x' ]

    steps:
      - uses: actions/checkout@v2
      - name: Setup Go ${{ matrix.go-version }}
        uses: actions/setup-go@v2
        with:
          go-version: ${{ matrix.go-version }}
      # You can test your matrix by printing the current Go version
      - name: Display Go version
        run: go version

Utilizar una versión específica de Go

Puedes configurar tu job para utilizar una versión específica de Go, tal como la 1.16.2. Como alternativa, puedes utilizar una sintaxis de versión semántica para obtener el último lanzamiento menor. Este ejemplo utiliza el último lanzamiento de parche de Go 1.16:

YAML
      - name: Setup Go 1.16.x
        uses: actions/setup-go@v2
        with:
          # Semantic version range syntax or exact version of Go
          go-version: '1.16.x'

Instalar dependencias

Puedes utilziar go get para instalar dependencias:

YAML
    steps:
      - uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2
        with:
          go-version: '1.16.x'
      - name: Install dependencies
        run: |
          go get .
          go get example.lab/octo-examplemodule
          go get example.lab/octo-examplemodule@v1.3.4

Construir y probar tu código

Puedes usar los mismos comandos que usas de forma local para construir y probar tu código. Este flujo de trabajo de ejemplo demuestra cómo utilizar go build y go test en un job:

YAML
name: Go
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2
        with:
          go-version: '1.16.x'
      - name: Install dependencies
        run: go get .
      - name: Build
        run: go build -v ./...
      - name: Test with the Go CLI
        run: go test

Empaquetar datos de flujo de trabajo como artefactos

Después de que se completa un flujo de trabajo, puedes cargar los artefactos que se den como resultado para su análisis. Por ejemplo, es posible que debas guardar los archivos de registro, los vaciados de memoria, los resultados de las pruebas o las capturas de pantalla. El siguiente ejemplo demuestra cómo puedes utilizar la acción upload-artifact para cargar los resultados de las pruebas.

Para obtener más información, consulta la sección "Almacenar los datos de los flujos de trabajo como artefactos".

YAML
name: Upload Go test results

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      matrix:
        go-version: [ '1.14', '1.15', '1.16.x' ]

    steps:
      - uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2
        with:
          go-version: ${{ matrix.go-version }}
      - name: Install dependencies
        run: go get .
      - name: Test with Go
        run: go test -json > TestResults-${{ matrix.go-version }}.json
      - name: Upload Go test results
        uses: actions/upload-artifact@v2
        with:
          name: Go-results-${{ matrix.go-version }}
          path: TestResults-${{ matrix.go-version }}.json