Saltar al contenido principal

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​

  1. Ve a GitHub -> Settings -> Developer settings -> Personal access tokens -> Fine-grained tokens
  2. Haz clic en Generate new token
  3. Pon un nombre descriptivo (por ejemplo, swisblade-deploy)
  4. Selecciona los repositorios a los que quieres que Swisblade acceda
  5. En Permissions -> Repository permissions, otorga Contents: Read-only
  6. Haz clic en Generate token y copialo

GitLab PAT​

  1. Ve a GitLab -> Preferences -> Access Tokens
  2. Haz clic en Add new token
  3. Pon un nombre (por ejemplo, swisblade-deploy)
  4. Selecciona el scope read_repository
  5. 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.
precaución

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:

  1. Swisblade ejecuta git fetch + git checkout en el repositorio de cada servicio
  2. Si el ref es un branch, descarga el ultimo commit
  3. Si el ref es un tag o SHA, hace checkout de esa version exacta
  4. 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.