# Configurar CI/CD para tu aplicación PHP


## Requisitos previos

Completa todas las secciones anteriores de esta guía, comenzando con [Contenedorizar una aplicación PHP](/guides/php/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.

## Descripción general

En esta sección, aprenderás cómo configurar y usar GitHub Actions para construir y probar tu imagen de Docker, así como para subirla a Docker Hub. Completarás los siguientes pasos:

1. Crear un nuevo repositorio en GitHub.
2. Definir el flujo de trabajo (workflow) de GitHub Actions.
3. Ejecutar 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 **Repository variable** llamada `DOCKER_USERNAME` con 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 como `docker-tutorial`. Asegúrate de que los permisos de acceso incluyan Read and Write (Lectura y Escritura).

5. Agrega el PAT como un **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. 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 construir, 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 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` por defecto.

3. In the editor window, copy and paste the following YAML configuration.

   ```yaml
   name: ci

   on:
     push:
       branches:
         - main

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

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

         - name: Build and test
           uses: docker/build-push-action@v7
           with:
             target: test
             load: true

         - name: Build and push
           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 de 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 el trabajo.

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

   Después de subir 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 muestra el desglose de todos los pasos.

3. Cuando el flujo de trabajo se complete, 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/)
- [Acciones de GitHub 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)

## Pasos siguientes

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

