Simulaciones desde GitHub
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 defectohttps://{label}-pr{numero}.api.mockz.io- un pull requesthttps://{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,
pry 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 appLa 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
| Entrada | Qué hace |
|---|---|
token | El GITHUB_TOKEN del workflow; prueba la identidad del repositorio. Obligatorio. |
region | Una 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. |
environment | Un objeto JSON de variables de entorno para el runtime. |
host | El 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-password | Credenciales para la interfaz del explorador de API. Pasa la contraseña como secreto de GitHub; se guarda con hash y nunca se registra. |
allowed-ips | Un 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-dir | Dónde viven las carpetas de servicio. Por defecto services. |
timeout-minutes | Cuánto esperar el despliegue antes de fallar el paso. Por defecto 5. |
delete | true elimina las simulaciones del repositorio y libera su cupo. |
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.