PlataformaRepositórios & CI/CD

Repositórios & CI/CD

Ligar repositórios e correr pipelines nos eQuantic Runners.

Ligar repositórios

Use o GitHub App (recomendado) para permissões granulares geridas pela organização, com tokens de instalação de curta duração. O Azure DevOps já é suportado: ligue uma organização com um Personal Access Token e escolha os repositórios (org/project/repo) — os webhooks (Service Hooks) são configurados automaticamente. O GitLab também já está disponível: ligue-o com um Personal Access Token — gitlab.com ou a sua própria instância self-hosted — e escolha os projetos (incluindo subgrupos profundamente aninhados); os webhooks são configurados automaticamente. O Bitbucket também é um fornecedor de primeira classe: ligue um workspace do Bitbucket com um app password ou um token de API da Atlassian (com o e-mail da sua conta) e escolha os repositórios (workspace/repo); os webhooks são configurados automaticamente. GitHub, GitLab, Bitbucket e Azure DevOps são todos totalmente suportados.

app.equantic.space/repos/ligar
Ligar repositório
123
equantic/space-frontend
equantic/space-backend
equantic/docs
1Instalação em 3 passos
Repositórios → Ligar: instale o GitHub App e escolha que repos importar.

Pipelines

A plataforma interpreta os seus YAMLs do GitHub Actions, do Azure Pipelines (azure-pipelines.yml), do GitLab CI (.gitlab-ci.yml) e do Bitbucket Pipelines (bitbucket-pipelines.yml) e executa os jobs nos eQuantic Runners. Funcionalidades:

app.equantic.space/repos/space-frontend/runs/1042
Sucesso
Lint
Build
Test·e2e
Deploy
$ pnpm test:e2eRunning 36 tests…✓ 36 passed (1.0m)
1Grafo de jobs
2Registos ao vivo
Cada execução mostra o grafo de jobs e os registos ao vivo por step.
  • Grafo de jobs derivado das dependências needs:, com matrix builds a expandir em nós paralelos.
  • Tasks reais do Azure Pipelines nos steps task:, resolvidas a partir da própria organização (incluindo tasks do marketplace); as tasks disponíveis apenas em PowerShell e as service connections ainda não são suportadas.
  • Registos ao vivo por step, com re-run de tudo / só falhas / job individual.
  • Editor visual de steps (arrastar e largar) e modo de edição avançada do YAML.
  • Aprovação manual antes de deploy de produção (quórum N-de-M) e environments protegidos.
  • Cache configurável e secrets/variáveis por repositório, com referências a variáveis de serviços.
Cada execução corre num runner efémero e isolado; os secrets são injetados como env vars no momento da execução e mascarados no pipeline de registos.

Pull requests

Com um repositório ligado (GitHub, GitLab, Bitbucket ou Azure DevOps), pode optar por gerir os respetivos Pull Requests dentro da eQuantic, em vez de no fornecedor — um opt-in por repositório. O código fica sempre no fornecedor; a eQuantic nunca aloja o git.

app.equantic.space/repos/space-frontend/pull-requests/428
PR #428Aprovar
+ const canMerge = … return rs.approved- if (blocking)
bloqueante
1Diff three-dot
2Comentário bloqueante
Revisão diretamente no diff que a eQuantic calcula (three-dot): threads ancoradas na linha exata e comentários bloqueantes que seguram o merge.
  • Opt-in no separador Pull requests — ative os PRs geridos pela eQuantic, ou continue a usar os PRs do fornecedor (a predefinição).
  • Criação de PRs — escolha o branch de origem → destino, título e descrição; cada PR recebe uma numeração própria por repositório.
  • Lista com estados — open / draft / merged / closed, com filtros.
  • Vista do diff — a eQuantic calcula o diff por si própria (three-dot, contra o merge-base, como nas UIs dos fornecedores) e armazena-o: o ecrã de detalhe mostra um resumo (ficheiros alterados, +adições −remoções) e hunks unificados por ficheiro, com números de linha exatos. Os ficheiros binários e os diffs muito grandes são assinalados em vez de renderizados; novos pushes no branch de origem atualizam o diff automaticamente através do webhook do repositório.
  • Revisão de código no diff — comente em qualquer linha do diff: as threads ficam ancoradas na linha exata, com respostas e resolução/reabertura. Quando chegam novos commits, as threads existentes nunca se perdem — são assinaladas como desatualizadas e agrupadas por ficheiro.
  • Comentários bloqueantes — um comentário de revisão pode ser marcado como bloqueante; os comentários bloqueantes por resolver ganham destaque no PR (banner e indicador na lista), e só o autor do comentário os pode resolver.
  • Aprovações e conversa — os revisores aprovam ou pedem alterações (um veredito ativo por revisor; o autor do PR não pode rever o próprio PR), com contadores de aprovações/alterações no PR e na lista — e ainda um feed de comentários gerais no PR, a par das threads de linha.
  • Proteção de branch — nas definições do repositório, defina regras por padrão de branch (main, release/*): número mínimo de aprovações, histórico linear, exigir que o branch esteja atualizado face ao destino, descartar aprovações antigas quando chegam novos commits e se os comentários bloqueantes por resolver vetam o merge — além das estratégias de merge permitidas e da estratégia predefinida.
  • Merge dentro da eQuantic — quando todas as condições passam (aprovações, nenhum pedido de alterações, nenhum comentário bloqueante por resolver, regras de proteção), o merge do PR pode ser feito com merge commit, squash ou rebase. A eQuantic executa o merge por si própria e envia o resultado para o fornecedor por push — nunca através da API de merge do fornecedor, nunca com force-push. Enquanto o merge estiver bloqueado, o PR lista exatamente o que falta; um PR também pode ser fechado sem merge.
  • Fila de merge — em vez de fazer o merge de imediato, um PR pode entrar na fila de merge do branch de destino. A fila processa as entradas por ordem: cada uma é testada contra o estado atual do destino — um branch que ficou para trás não precisa de ser atualizado manualmente, e entrar na fila é permitido mesmo com o branch desatualizado — e, se todas as condições continuarem a cumprir-se no momento do merge, a eQuantic executa o merge e faz push do resultado. Um conflito ou uma condição por cumprir retira a entrada da fila com o motivo, e a seguinte avança; as entradas em espera podem sair da fila, e o painel da fila no separador Pull requests mostra as posições e o estado ao vivo.
  • Checks de CI — as execuções de pipeline nos commits do PR reportam o respetivo estado nativamente no PR: um check por workflow, por commit — pendente, sucesso ou falha — apresentado no painel de merge. Uma regra de proteção de branch pode ainda exigir checks: o merge do PR só acontece quando todos os checks reportados passaram — um check falhado ou ainda em execução bloqueia o merge, tal como a ausência de qualquer check reportado (um check exigido nunca passa em silêncio). A mesma exigência aplica-se igualmente às entradas da fila de merge.
O fornecedor continua a ser o host do git — e os Pull Requests do próprio fornecedor continuam a funcionar para os repositórios que não fizerem o opt-in.

Ambientes de preview

Cada Pull Request aberto pode ter um ambiente de preview efémero — um serviço isolado, construído a partir do branch do PR, com URL própria (pr-N.preview.<domínio-de-deploy>).

  • Configuração por repositório no separador Previews: o toggle de auto-preview, o Space de destino e um ambiente base opcional, cujas variáveis são clonadas para cada preview.
  • Ciclo de vida automático — PR aberto → ambiente provisionado; novos pushes → redeploy; merge/fecho → teardown. O cartão mostra o estado ao vivo (building → ready / failed), a URL, branch/commit e autor.
  • Modo manual — o separador lista os PRs abertos sem preview, com criação num clique; os previews existentes podem ser reconstruídos ou destruídos a partir do menu do cartão.
  • A URL do preview é publicada como comentário no PR e mantida atualizada.
Os previews correm como serviços normais (exigem repositório ligado + deploy engine), com um mínimo de 1 instância — sem scale-to-zero enquanto o PR estiver aberto. O merge ou fecho do PR destrói o ambiente automaticamente.