Integracion con Git
Swisblade despliega codigo directamente desde tus repositorios Git. Se soportan tanto GitHub como GitLab.
Formato de URL del repositorio
Usa la URL completa de clonacion en tu stack.json:
"source": {
"repo": "github.com/your-org/your-repo.git",
"ref": "main"
}
Para GitLab:
"source": {
"repo": "gitlab.com/your-org/your-repo.git",
"ref": "main"
}
Personal Access Tokens
Si tu repositorio es privado, necesitas proporcionar un Personal Access Token (PAT) al crear el proyecto. El PAT se usa para clonar y hacer pull de tu codigo.
GitHub PAT
- Ve a GitHub -> Settings -> Developer settings -> Personal access tokens -> Fine-grained tokens
- Haz clic en Generate new token
- Pon un nombre descriptivo (por ejemplo,
swisblade-deploy) - Selecciona los repositorios a los que quieres que Swisblade acceda
- En Permissions -> Repository permissions, otorga Contents: Read-only
- Haz clic en Generate token y copialo
GitLab PAT
- Ve a GitLab -> Preferences -> Access Tokens
- Haz clic en Add new token
- Pon un nombre (por ejemplo,
swisblade-deploy) - Selecciona el scope read_repository
- Haz clic en Create personal access token y copialo
Como se almacenan los PATs
- Tu PAT se encripta (AES-256-GCM) antes de almacenarse. Nunca es visible en texto plano despues de guardarse.
- La clave de encriptacion vive en el servidor; nunca llega al navegador.
- Puedes reemplazar un PAT en cualquier momento desde Configuracion del Proyecto, pero no puedes revelar el existente.
- Los mensajes de error de clonacion sanitizan la URL para que tu token nunca se exponga en los logs.
Swisblade solo necesita acceso de lectura a tus repositorios. Nunca otorgues permisos de escritura al PAT.
Proyectos multi-repo
Cada servicio puede provenir de un repositorio diferente:
{
"name": "my-platform",
"services": {
"api": {
"source": { "repo": "github.com/myorg/api.git", "ref": "v2.1.0" },
"type": "app",
"runtime": "node",
"port": 3000
},
"worker": {
"source": { "repo": "github.com/myorg/worker.git", "ref": "v1.3.0" },
"type": "app",
"runtime": "python",
"port": 8080
}
}
}
Todos los repos se clonan usando el mismo PAT. Si tus servicios abarcan multiples organizaciones de GitHub/GitLab, asegurate de que el PAT tenga acceso a todas.
Sincronizacion en redespliegue
Cuando ejecutas un redespliegue:
- Swisblade ejecuta
git fetch+git checkouten el repositorio de cada servicio - Si el
refes un branch, descarga el ultimo commit - Si el
refes un tag o SHA, hace checkout de esa version exacta - Los archivos modificados activan una recompilacion de la imagen Docker
Esto significa:
- Branches (
"main","develop") -> siempre despliegan el codigo mas reciente - Tags (
"v1.2.0") -> despliegan la misma version cada vez - SHAs (
"a1b2c3d") -> despliegan una instantanea exacta e inmutable
Actualizar el stack contract
Si cambias tu stack.json entre despliegues, Swisblade detecta el diff y:
- Aprovisiona nueva infraestructura si agregaste
needs - Asigna nuevos puertos para servicios nuevos
- Limpia las asignaciones de puertos para servicios eliminados
Tambien puedes editar stack.json directamente desde Configuracion del Proyecto -> Stack Contract en el dashboard.