MockzillaMockzilla

Simulaciones desde GitHub

Actualizado el 29 sept 2026·5 min de lectura

Una simulación desde GitHub convierte un repositorio en la fuente de verdad: las specs, los endpoints estáticos y la configuración viven como archivos, y cada push los despliega. Nada del mock cambia sin un commit detrás, que es justamente la idea: mocks revisados como código, con una URL por rama y por pull request.

Del push a la URL

Agrega un paso a un workflow:

name: mockzilla

on:
  push:
    branches: [main]
  pull_request:
    types: [opened, synchronize, reopened, closed]

jobs:
  publish:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
    steps:
      - uses: actions/checkout@v4
      - uses: mockzilla/actions@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

En cada push la action verifica que el workflow corre de verdad en tu repositorio, usando el GITHUB_TOKEN estándar que GitHub emite para esa ejecución. No hay ninguna clave de Mockzilla que crear, y el token se usa una vez contra la API de GitHub y nunca se guarda. Después sube el contenido empaquetado, espera el despliegue e imprime la URL:

  • https://{label}.api.mockz.io - la rama por defecto
  • https://{label}-pr{numero}.api.mockz.io - un pull request
  • https://{label}-{rama}.api.mockz.io - cualquier otra rama que despliegue el workflow

El label es el nombre del repositorio, o el que pide el input host. Si otra simulación ya tiene ese nombre, la tuya lleva un número detrás: petstore-2.

El host de una rama lleva su nombre en minúsculas, sin nada que no sean letras y dígitos: feature/checkout en petstore responde en https://petstore-featurecheckout.api.mockz.io. La ejecución falla y dice por qué cuando el nombre de la rama:

  • no conserva letras ni dígitos
  • parece un pull request, pr y dígitos
  • hace que el host pase de 63 caracteres
  • da un host que ya está en uso, por otra rama activa o por otra simulación

Un pull request recibe su URL publicada como comentario en el PR, así los revisores entran directo al mock modificado. Cerrarlo da de baja ese despliegue, siempre que el workflow escuche los pull requests cerrados.

No hace falta cuenta

El primer push desde un repositorio lo registra: la simulación existe y responde antes de que nadie se haya registrado. Cuando quieras verla en la app, con historial, replays y uso, accede con GitHub y las simulaciones de tu organización ya están ahí. La app muestra en solo lectura una simulación que viene de un repositorio: su contenido cambia con commits, no con clics, aunque los ajustes de acceso y las variables de entorno se siguen editando en la app, para los valores que no deberían vivir en un archivo de workflow.

La estructura del repositorio

La action portable publica una carpeta por servicio; la estructura es la misma que comparten todos los tipos de simulación:

services/
  petstore/
    openapi.yml        # la spec; sirve cualquier *.yml/yaml/json
    config.yml         # opcional: upstream, latencia, errores, montaje
    context.yml        # opcional: valores que dan forma a los datos generados
    static/
      users/
        get/
          index.json   # GET /petstore/users, fijado a mano
app.yml                # opcional: ajustes de toda la app

La action de codegen despliega en su lugar un proyecto Go generado desde el repositorio, con los handlers incluidos.

Consulta Simulaciones portables para el formato de carpeta y Simulaciones codegen para la clase generada.

Qué acepta la action

EntradaQué hace
tokenEl GITHUB_TOKEN del workflow; prueba la identidad del repositorio. Obligatorio.
regionUna preferencia de región, no una obligación: el primer despliegue la intenta, y si esa región no tiene capacidad se usa la más cercana disponible. No tiene efecto después del primer despliegue.
environmentUn objeto JSON de variables de entorno para el runtime.
hostEl dominio en el que responde la simulación: mockz.io, mockz.net, mockz.org, mockzilla.org, mockzilla.de o mockzilla.net. Con un label delante lo pides: petstore.mockz.io responde en https://petstore.api.mockz.io. Queda fijo desde el primer despliegue. Por defecto toma el ajuste de la organización, o mockz.io.
basic-auth-user, basic-auth-passwordCredenciales para la interfaz del explorador de API. Pasa la contraseña como secreto de GitHub; se guarda con hash y nunca se registra.
allowed-ipsUn arreglo JSON de CIDRs con permiso para llegar a la simulación. Se ignora con una advertencia cuando el plan no permite lista de IP.
services-dirDónde viven las carpetas de servicio. Por defecto services.
timeout-minutesCuánto esperar el despliegue antes de fallar el paso. Por defecto 5.
deletetrue elimina las simulaciones del repositorio y libera su cupo.
En los planes con un solo cupo de simulación, un repositorio lo ocupa. Corre la action con delete: true para liberar el cupo antes de conectar otro.

Abierta por diseño

La action es un repositorio público, así que lo que corre dentro de tu CI no es una caja negra: léelo en mockzilla/actions. El motor que despliega es el mismo mock server de código abierto que corre todo lo demás acá, y la estructura que publica coincide con la de la plantilla pública.

Empieza desde la plantilla: mockzilla/mockzilla-portable-template

La referencia completa de entradas vive junto a la action, y en su página de docs.

Consulta GitHub Action.

¿Te sirvió esta página?