# Configura CI/CD para tu aplicación de Go


## Requisitos previos

Completa las secciones anteriores de esta guía, comenzando con [Construye tu imagen de Go](/guides/golang/configure-ci-cd/build-images/). Debes tener una cuenta de [GitHub](https://github.com/signup) y una cuenta verificada de [Docker](https://hub.docker.com/signup) para completar esta sección.

## Resumen

En esta sección, aprenderás cómo configurar y utilizar GitHub Actions para construir y empujar (push) tu imagen de Docker a Docker Hub. Completarás los siguientes pasos:

1. Crea un nuevo repositorio en GitHub.
2. Define el flujo de trabajo (workflow) de GitHub Actions.
3. Ejecuta el flujo de trabajo.

## Paso uno: Crea el repositorio

Crea un repositorio de GitHub, configura las credenciales de Docker Hub y envía (push) tu código fuente.

1. [Crea un nuevo repositorio](https://github.com/new) en GitHub.

2. Abre la configuración (**Settings**) del repositorio y ve a **Secrets and variables** > **Actions**.

3. Crea una nueva variable de repositorio (**Repository variable**) llamada `DOCKER_USERNAME` y tu Docker ID como valor.

4. Crea un nuevo [Token de acceso personal (PAT)](/security/access-tokens/#create-an-access-token) para Docker Hub. Puedes nombrar este token `docker-tutorial`. Asegúrate de que los permisos de acceso incluyan Read y Write.

5. Agrega el PAT como un secreto de repositorio (**Repository secret**) en tu repositorio de GitHub, con el nombre `DOCKERHUB_TOKEN`.

6. En tu repositorio local en tu máquina, ejecuta el siguiente comando para cambiar el origen al repositorio que acabas de crear. Asegúrate de cambiar `your-username` por tu nombre de usuario de GitHub y `your-repository` por el nombre del repositorio que creaste.

   ```console
   $ git remote set-url origin https://github.com/your-username/your-repository.git
   ```

7. Ejecuta los siguientes comandos para preparar (stage), confirmar (commit) y enviar (push) tu repositorio local a GitHub.

   ```console
   $ git add -A
   $ git commit -m "my commit"
   $ git push -u origin main
   ```

## Paso dos: Configura el flujo de trabajo

Configura tu flujo de trabajo de GitHub Actions para construir, probar y enviar la imagen a Docker Hub.

1. Ve a tu repositorio en GitHub y luego selecciona la pestaña **Actions**.

2. Selecciona **set up a workflow yourself** (configurar un flujo de trabajo por ti mismo).

   Esto te llevará a una página para crear un nuevo archivo de flujo de trabajo de GitHub Actions en tu repositorio, bajo `.github/workflows/main.yml` de forma predeterminada.

3. En la ventana del editor, copia y pega la siguiente configuración YAML y confirma los cambios.

   ```yaml
   name: ci

   on:
     push:
       branches:
         - main

   jobs:
     build:
       runs-on: ubuntu-latest
       steps:
         - name: Iniciar sesión en Docker Hub
           uses: docker/login-action@v4
           with:
             username: ${{ vars.DOCKER_USERNAME }}
             password: ${{ secrets.DOCKERHUB_TOKEN }}

         - name: Configurar Docker Buildx
           uses: docker/setup-buildx-action@v4

         - name: Construir y empujar
           uses: docker/build-push-action@v7
           with:
             platforms: linux/amd64,linux/arm64
             push: true
             tags: ${{ vars.DOCKER_USERNAME }}/${{ github.event.repository.name }}:latest
   ```

   Para obtener más información sobre la sintaxis YAML para `docker/build-push-action`, consulta el [README de GitHub Action](https://github.com/docker/build-push-action/blob/master/README.md).

## Paso tres: Ejecuta el flujo de trabajo

Guarda el archivo de flujo de trabajo y ejecuta el trabajo.

1. Selecciona **Commit changes...** (Confirmar cambios) y envía los cambios a la rama `main`.

   Después de enviar el commit, el flujo de trabajo se inicia automáticamente.

2. Ve a la pestaña **Actions**. Mostrará el flujo de trabajo.

   Al seleccionar el flujo de trabajo, se te mostrará el desglose de todos los pasos.

3. Cuando se complete el flujo de trabajo, ve a tus [repositorios en Docker Hub](https://hub.docker.com/repositories).

   Si ves el nuevo repositorio en esa lista, significa que GitHub Actions envió correctamente la imagen a Docker Hub.

## Resumen

En esta sección, aprendiste cómo configurar un flujo de trabajo de GitHub Actions para tu aplicación.

Información relacionada:

- [Introducción a GitHub Actions](/guides/gha/)
- [Docker Build GitHub Actions](/build/ci/github-actions/)
- [Sintaxis de flujo de trabajo para GitHub Actions](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions)

## Siguientes pasos

A continuación, aprende cómo puedes probar y depurar localmente tus cargas de trabajo en Kubernetes antes de desplegar.

