InteeBuild puede compilar tu app automáticamente cada vez que haces push a una rama configurada en tu repositorio GitHub.
- Un repositorio en GitHub (público o privado).
- Una Personal Access Token (PAT) de GitHub con permisos
repo,workflow,admin:repo_hook. - El servidor InteeBuild configurado con
GITHUB_TOKENeINTEE_BUILDS_REPOen.env.
Crea un archivo .inteebuild/config.json en la raíz de tu repositorio. Este archivo define cómo se compila tu app.
{
"url": "https://tusitio.com",
"appName": "MiApp",
"packageName": "com.miempresa.miapp",
"outputType": "apk",
"platform": "android",
"provider": "capacitor",
"versionName": "1.0.0",
"versionCode": 1,
"compileSdk": 35,
"targetSdk": 35,
"minSdk": 23,
"permissions": {
"INTERNET": true,
"CAMERA": false
},
"iconBase64": "",
"keystoreBase64": "",
"keystorePassword": "",
"keyPassword": "",
"outputs": ["apk"]
}Nota: Todos los campos son opcionales salvo
urlyappName. Si omitespackageName, se genera uno automático. Los permisos se mapean a los granulares de InteeBuild.
- Abre InteeBuild Studio (
index.html). - Ve a Cuenta → Integraciones Git.
- Pulsa Conectar repositorio.
- Rellena:
- Repo:
usuario/repo(ej.miusuario/miapp). - Rama:
main(o la que uses para producción). - Token: Tu PAT de GitHub.
- Webhook URL: Se autocompleta con la URL de tu instancia InteeBuild +
/api/git/webhook.
- Repo:
- Pulsa Guardar.
curl -X POST https://tu-inteeBuild.com/api/git/connect \
-H "Content-Type: application/json" \
-d '{
"repo": "usuario/repo",
"branch": "main",
"token": "ghp_xxxxxxxxxxxx",
"webhookUrl": "https://tu-inteeBuild.com/api/git/webhook"
}'Al guardar la integración, InteeBuild registra la configuración. No crea el webhook en GitHub automáticamente (por limitaciones de permisos de la PAT). Debes crear el webhook manualmente en GitHub:
- En tu repo GitHub → Settings → Webhooks → Add webhook.
- Payload URL:
https://tu-inteeBuild.com/api/git/webhook - Content type:
application/json - Events: Selecciona Just the push event.
- Active: ✓
Cuando haces push a la rama configurada:
- GitHub envía el payload a
/api/git/webhook. - InteeBuild verifica que exista integración para ese
repo#branch. - Lee
.inteebuild/config.jsondel commit (si existe) o usa valores por defecto. - Lanza una compilación vía
startBuild()(cola local → GitHub Actions). - Responde con
{ "ok": true, "buildId": "abcd", "branch": "main" }.
push a main
│
▼
GitHub Webhook → /api/git/webhook
│
▼
InteeBuild busca integración (repo + branch)
│
▼
Lee .inteebuild/config.json del commit (opcional)
│
▼
Encola build local (máx 3 concurrentes)
│
▼
Sincroniza workflow (.github/workflows/build-app.yml)
│
▼
Sube proyecto a rama temporal (build-xxxx)
│
▼
Dispara workflow_dispatch en GitHub Actions
│
▼
GitHub Actions compila (Gradle / Flutter / Tauri / etc.)
│
▼
Sube artefactos (APK, AAB, IPA, EXE, DMG…)
│
▼
InteeBuild detecta finalización (poll cada 6s)
│
▼
Guarda en historial + notifica webhook configurado (opcional)
- En Studio: Historial → filtra por estado.
- Via API:
GET /api/build/:idoGET /api/v1/build/:id. - Webhook de notificación: Configura
webhookUrlen la integración o en el config para recibirbuild.completed/build.failed.
| Problema | Causa | Solución |
|---|---|---|
| Webhook 404 | Integración no existe | Verifica repo y branch exactos en InteeBuild |
| Build falla "config not found" | No hay .inteebuild/config.json |
Añade el archivo o configura defaults en la integración |
| Rate limit 429 | >10 builds/hora/IP | Espera o usa distinta IP |
| Workflow no existe | Primer build en repo nuevo | El primer push crea el workflow automáticamente |
| Endpoint | Método | Descripción |
|---|---|---|
/api/git/integrations |
GET | Listar integraciones |
/api/git/connect |
POST | Crear integración |
/api/git/:id |
DELETE | Borrar integración |
/api/git/webhook |
POST | Recibir webhook GitHub (interno) |
/api/build/:id |
GET | Estado de build (con phase, percent, queuePos, actionsSteps) |
/api/v1/build/:id |
GET | Estado v1 (igual + buildId, apkUrl, aabUrl…) |
- El token GitHub se guarda hasheado (SHA-256 truncado) en
data/git-integrations.json. El token en claro solo se usa al crear la integración y opcionalmente se guarda enrawTokensi lo necesitas para borrar el webhook luego. - Las ramas de build (
build-*,decompile-*) se borran automáticamente a los 60s tras finalizar. - Los artefactos y runs de Actions se limpian tras 30 min.