MockzillaMockzilla

Simulações do GitHub

Atualizado em 29 de set. de 2026·5 min de leitura

Uma simulação do GitHub transforma um repositório na fonte da verdade: os specs, os endpoints estáticos e a configuração vivem como arquivos, e todo push faz o deploy deles. Nada do mock muda sem um commit atrás, que é justamente a ideia: mocks revisados como código, com uma URL por branch e por pull request.

Do push para a URL

Adicione um passo a um 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 }}

Em cada push a action confere que o workflow roda mesmo no seu repositório, usando o GITHUB_TOKEN padrão que o GitHub emite para aquela execução. Não tem nenhuma chave do Mockzilla para criar, e o token é usado uma vez contra a API do GitHub e nunca é guardado. Depois ela sobe o conteúdo empacotado, espera o deploy e imprime a URL:

  • https://{label}.api.mockz.io - a branch padrão
  • https://{label}-pr{numero}.api.mockz.io - um pull request
  • https://{label}-{branch}.api.mockz.io - qualquer outra branch que o workflow publica

O label é o nome do repositório, ou o que o input host pede. Se outra simulação já tem esse nome, a sua ganha um número no final: petstore-2.

O host de uma branch leva o nome dela em minúsculas, sem nada além de letras e dígitos: feature/checkout em petstore responde em https://petstore-featurecheckout.api.mockz.io. A execução falha e diz por quê quando o nome da branch:

  • não fica com letras nem dígitos
  • parece um pull request, pr e dígitos
  • deixa o host com mais de 63 caracteres
  • dá um host que já está em uso, por outra branch ativa ou por outra simulação

Um pull request ganha a URL dele publicada como comentário no PR, então quem revisa entra direto no mock que mudou. Fechar o PR derruba aquele deploy, desde que o workflow escute pull requests fechados.

Não precisa de conta

O primeiro push de um repositório já registra ele: a simulação existe e responde antes de qualquer pessoa ter criado conta. Quando você quiser ver ela no app, com histórico, replays e uso, entre com o GitHub e as simulações da sua organização já estão lá. O app mostra em modo leitura uma simulação que vem de um repositório: o conteúdo dela muda por commit, não por clique, mas as configurações de acesso e as variáveis de ambiente continuam editáveis no app, para os valores que não deveriam viver num arquivo de workflow.

A estrutura do repositório

A action portable publica uma pasta por serviço; a estrutura é a mesma que todos os tipos de simulação dividem:

services/
  petstore/
    openapi.yml        # o spec; serve qualquer *.yml/yaml/json
    config.yml         # opcional: upstream, latência, erros, montagem
    context.yml        # opcional: valores que dão forma aos dados gerados
    static/
      users/
        get/
          index.json   # GET /petstore/users, fixado na mão
app.yml                # opcional: configurações de todo o app

A action de codegen faz o deploy de um projeto Go gerado a partir do repositório, com os handlers junto.

Veja Simulações portable para o formato de pasta e Simulações codegen para o tipo gerado.

O que a action aceita

EntradaO que faz
tokenO GITHUB_TOKEN do workflow; prova a identidade do repositório. Obrigatório.
regionUma preferência de região, não uma obrigação: o primeiro deploy tenta ela, e se aquela região não tiver capacidade, a mais próxima disponível entra no lugar. Não tem efeito depois do primeiro deploy.
environmentUm objeto JSON de variáveis de ambiente para o runtime.
hostO domínio em que a simulação responde: mockz.io, mockz.net, mockz.org, mockzilla.org, mockzilla.de ou mockzilla.net. Com um label na frente você pede ele: petstore.mockz.io responde em https://petstore.api.mockz.io. Fica fixo a partir do primeiro deploy. Por padrão pega a configuração da organização, ou mockz.io.
basic-auth-user, basic-auth-passwordCredenciais para a interface do explorador de API. Passe a senha como secret do GitHub; ela é guardada com hash e nunca vai para o log.
allowed-ipsUm array JSON de CIDRs com permissão de alcançar a simulação. É ignorado com um aviso quando o plano não permite lista de IP.
services-dirOnde ficam as pastas de serviço. Por padrão services.
timeout-minutesQuanto esperar pelo deploy antes de falhar o passo. Por padrão 5.
deletetrue remove as simulações do repositório e libera a vaga dele.
Nos planos com uma vaga de simulação só, um repositório ocupa ela. Rode a action com delete: true para liberar a vaga antes de conectar outro.

Aberta por escolha

A action é um repositório público, então o que roda dentro do seu CI não é caixa preta: leia em mockzilla/actions. O motor que ela publica é o mesmo servidor mock de código aberto que roda todo o resto aqui, e a estrutura que ela publica bate com a do template público.

Comece pelo template: mockzilla/mockzilla-portable-template

A referência completa das entradas fica junto da action, e na página de docs dela.

Veja GitHub Action.

Esta página ajudou?