Saltar al contenido principal
MDev Env Pro
Guía: Guía Mise - Adiós nvm/pyenv92% Completado

En este módulo aprenderás:

  • Lleva tu mise.toml a GitHub Actions con jdx/mise-action@v2, GitLab CI, DevContainers y Docker multi-stage.
  • Comandos y configuraciones clave para 12. CI/CD y DevContainers: Mise en Todas Partes
  • Ejercicios prácticos listos para probar en tu terminal local

Habla causita: El mismo mise.toml en tu laptop, en GitHub y en producción

Mano, ¿cuántas veces has visto el clásico desastre en el equipo?:

  • En tu laptop tienes Node 24.15 y pnpm 10.
  • Tu compañero en su jato usa Node 22 porque le dio flojera actualizar.
  • Y en GitHub Actions el pipeline corre con Node 20 y revienta en pleno deploy a las 11 PM un viernes.

¡Están renegando gratis! La verdadera magia de mise es que el mismo archivo mise.toml que usas para programar localmente se convierte en la única fuente de verdad (Single Source of Truth) para tu pipeline de CI/CD, tus DevContainers y tus imágenes de Docker.

GitHub Actions: jdx/mise-action@v2Cache automático de herramientas y binariosDevContainers & Docker Multi-stage

1. GitHub Actions con jdx/mise-action@v2

Olvídate de encadenar actions/setup-node, actions/setup-python, actions/setup-go y configurar 4 caches distintos que vuelven tu workflow lentazo como desfile militar. Con la acción oficial de mise, instalas todo tu stack en un solo paso con caché inteligente de binarios:

.github/workflows/ci.ymlyaml
name: CI Pipeline

on:
push:
  branches: [main]
pull_request:
  branches: [main]

jobs:
test:
  runs-on: ubuntu-latest
  steps:
    - name: Checkout del repositorio
      uses: actions/checkout@v4

    - name: Instalar herramientas con Mise
      uses: jdx/mise-action@v2
      with:
        # mise-action lee automáticamente el mise.toml del repo
        cache: true
        install: true

    - name: Ejecutar pruebas y linter
      run: |
        mise run lint
        mise run test
        mise run build

2. Integración en GitLab CI

Si en tu chamba usan GitLab CI, puedes instalar mise en la fase de preparación o usar una imagen base ligera:

.gitlab-ci.ymlyaml
default:
image: ubuntu:24.04
before_script:
  - apt-get update && apt-get install -y curl git
  - curl https://mise.run | sh
  - export PATH="$HOME/.local/bin:$PATH"
  - mise install --yes

stages:
- test
- deploy

run-checks:
stage: test
script:
  - mise run lint
  - mise run test

3. DevContainers con devcontainer.json

Para que cualquier nuevo programador que ingrese a tu equipo o abra el proyecto en GitHub Codespaces tenga el entorno listo en 1 minuto sin configurar nada:

.devcontainer/devcontainer.jsonjson
{
"name": "Entorno Pro Mise",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu-24.04",
"features": {
  "ghcr.io/jdx/mise:latest": {
    "version": "latest"
  }
},
"postCreateCommand": "mise install --yes",
"customizations": {
  "vscode": {
    "extensions": [
      "mise.mise-vscode",
      "biomejs.biome"
    ]
  }
}
}

4. Docker Multi-stage para Producción Limpia

En producción no quieres instalar compilers ni cosas pesadas. Usas mise en la etapa de builder para generar el bundle estático y luego copias solo los artefactos al contenedor final en Nginx o distroless:

Dockerfiledockerfile
# --- STAGE 1: Builder con mise ---
FROM ubuntu:24.04 AS builder

# Instalar dependencias mínimas para mise
RUN apt-get update && apt-get install -y curl git ca-certificates && rm -rf /var/lib/apt/lists/*

# Instalar mise
RUN curl https://mise.run | sh
ENV PATH="/root/.local/bin:$PATH"

WORKDIR /app
COPY mise.toml package.json pnpm-lock.yaml ./

# Instalar Node y pnpm según mise.toml
RUN mise install --yes

# Copiar código y compilar
COPY . .
RUN mise exec -- pnpm install --frozen-lockfile
RUN mise exec -- pnpm build

# --- STAGE 2: Runtime ligero ---
FROM nginx:alpine AS runner
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Reto Ninja de la Lección 🥷

Demuestra que dominas CI/CD y DevContainers con mise respondiendo este test rápido:

Reto Ninja: CI/CD & DevContainers 🚀
Pregunta 1/3
❯reto --step=1

¿Cuál es la GitHub Action oficial y optimizada para instalar herramientas y gestionar caché con mise?

Ejercicio Práctico Ninja 🥷

  1. Revisa tu mise.toml y asegúrate de que todas tus herramientas tengan versiones fijadas.
  2. Crea el directorio .github/workflows/ si no existe.
  3. Agrega un workflow con jdx/mise-action@v2.
  4. Haz push a GitHub y observa cómo tu pipeline descarga y cachea el entorno completo en tiempo récord. ¡Cero renegar gratis!

¿Terminaste esta lección?

Marca tu progreso para sincronizar el avance en tu navegador.