Diferencia entre revisiones de «MCC - Implementación CI/CD con Github Actions»
Página creada con «== Pipeline para GitHub Actions: Build y Push de Imágenes Docker Multi-arch == Creación del pipeline para GitHub Actions, que realiza las pruebas de HTML, construye la imagen Docker usando ''docker buildx'' para plataformas AMD64 y ARM64, y la publica en Docker Hub. === 1. Pre-requisitos === Tener configuradas tus credenciales de Docker Hub en los Secrets de GitHub: * '''DOCKER_HUB_USERNAME''': Tu nombre de usuario de Docker Hub. * '''DOCKER_HUB_PASSWORD''': Tu co…» |
Sin resumen de edición |
||
Línea 13: | Línea 13: | ||
=== 2. Configuración de GitHub Actions (.github/workflows/docker_build.yml) === | === 2. Configuración de GitHub Actions (.github/workflows/docker_build.yml) === | ||
< | <pre> | ||
name: Build and Push Docker Image | name: Build and Push Docker Image | ||
Línea 79: | Línea 79: | ||
- name: Pull the image to verify | - name: Pull the image to verify | ||
run: docker pull ${{ secrets.DOCKER_HUB_REPO }}:latest | run: docker pull ${{ secrets.DOCKER_HUB_REPO }}:latest | ||
</ | </pre> | ||
=== Explicación === | === Explicación === |
Revisión del 01:45 10 sep 2024
Pipeline para GitHub Actions: Build y Push de Imágenes Docker Multi-arch
Creación del pipeline para GitHub Actions, que realiza las pruebas de HTML, construye la imagen Docker usando docker buildx para plataformas AMD64 y ARM64, y la publica en Docker Hub.
1. Pre-requisitos
Tener configuradas tus credenciales de Docker Hub en los Secrets de GitHub:
- DOCKER_HUB_USERNAME: Tu nombre de usuario de Docker Hub.
- DOCKER_HUB_PASSWORD: Tu contraseña o token de Docker Hub.
- DOCKER_HUB_REPO: Nombre del repositorio en Docker Hub (por ejemplo: miusuario/mirepositorio).
Puedes agregar estos secrets desde tu repositorio en GitHub, navegando a Settings > Secrets and variables > Actions y añadiéndolos ahí.
2. Configuración de GitHub Actions (.github/workflows/docker_build.yml)
name: Build and Push Docker Image on: push: branches: - main # Ejecutar en la rama principal pull_request: branches: - main jobs: # Job para validar el HTML html_validation: runs-on: ubuntu-latest steps: - name: Check out the code uses: actions/checkout@v3 - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: '14' - name: Install htmlhint run: npm install -g htmlhint - name: Validate HTML run: htmlhint public-html/**/*.html # Cambia según la estructura de tu proyecto # Job para construir la imagen Docker multi-arch docker_build: needs: html_validation runs-on: ubuntu-latest steps: - name: Check out the code uses: actions/checkout@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Log in to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_PASSWORD }} - name: Build and push Docker image (AMD64, ARM64) run: | docker buildx create --use docker buildx inspect --bootstrap docker buildx build --platform linux/amd64,linux/arm64 -t ${{ secrets.DOCKER_HUB_REPO }}:latest --push . # (Opcional) Job para verificar que la imagen se ha subido correctamente docker_push: needs: docker_build runs-on: ubuntu-latest steps: - name: Log in to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_PASSWORD }} - name: Pull the image to verify run: docker pull ${{ secrets.DOCKER_HUB_REPO }}:latest
Explicación
- Trigger: El workflow se ejecuta cuando hay un push a la rama principal o cuando se abre un pull request a esa rama.
- html_validation Job:
- Usa Node.js para instalar htmlhint y validar los archivos HTML ubicados en la carpeta public-html.
- Este job se ejecuta primero, y si falla, el pipeline se detiene.
- docker_build Job:
- Se ejecuta solo si el job de validación HTML pasa.
- Usa docker buildx para construir la imagen Docker para ambas arquitecturas (AMD64 y ARM64).
- Publica la imagen directamente en Docker Hub usando --push.
- docker_push Job (opcional):
- Este paso verifica que la imagen se haya subido correctamente a Docker Hub haciendo un docker pull de la imagen recién subida.
3. Ajustes Adicionales
- Validación de HTML: Puedes ajustar el comando de htmlhint según la estructura de tu proyecto.
- Tags en Docker: Puedes usar tags de versión o basados en commits en lugar de latest.
4. Configuración de Secrets en GitHub
Ve a Settings > Secrets and variables > Actions en tu repositorio y añade:
- DOCKER_HUB_USERNAME: Tu usuario de Docker Hub.
- DOCKER_HUB_PASSWORD: Tu token o contraseña de Docker Hub.
- DOCKER_HUB_REPO: El nombre del repositorio en Docker Hub, como miusuario/mirepositorio.
Este pipeline te permite realizar pruebas en el HTML, construir imágenes Docker multi-arch y publicarlas en Docker Hub de manera automatizada con GitHub Actions.