# Configura CI/CD para tu aplicación .NET


## Requisitos previos

Completa todas las secciones anteriores de esta guía, comenzando con [Containerizar una aplicación .NET](/guides/dotnet/configure-ci-cd/containerize/). 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 usar GitHub Actions para compilar y probar tu imagen de Docker, así como para subirla 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: Crear el repositorio

Crea un repositorio de GitHub, configura las credenciales de Docker Hub y sube 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` con tu ID de Docker 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 Lectura y Escritura (Read and 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
   la dirección de origen (origin) 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. En tu repositorio local en tu máquina, ejecuta el siguiente comando para cambiar el nombre de
   la rama a main.

   ```console
   $ git branch -M main
   ```

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

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

## Paso dos: Configurar el flujo de trabajo

Configura tu flujo de trabajo de GitHub Actions para compilar, probar y subir 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 tú 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.

   ```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: Compilar y probar
           uses: docker/build-push-action@v7
           with:
             target: build
             load: true

         - name: Compilar y subir
           uses: docker/build-push-action@v7
           with:
             platforms: linux/amd64,linux/arm64
             push: true
             target: final
             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 la GitHub Action](https://github.com/docker/build-push-action/blob/master/README.md).

## Paso tres: Ejecutar el flujo de trabajo

Guarda el archivo de flujo de trabajo y ejecuta la tarea (job).

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

   Después de subir la confirmación, el flujo de trabajo se inicia automáticamente.

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

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

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

   Si ves el nuevo repositorio en esa lista, significa que GitHub Actions
   subió 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/)
- [GitHub Actions para Docker Build](/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)

## Próximos pasos

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

