Launchpad

Índice

Introducción

En este tutorial integro la propuesta-modelo-desarrollo con el tutorial de bazaar, y explico cómo usaremos el launchpad en concreto.

Launchpad

Launchpad es un hosting de código tipo sourceforge que integra la gestión de proyectos y facilita la colaboración entre distintos proyectos de software libre. Integra bugs, ramas de código, preguntas a los desarrolladores e incluso traducciones y servicio de build para que te construyan y preparen los paquetes de código automáticamente.

A efectos prácticos, nos servirá para tener el código ahí, poder bajarlo y subirlo sin preocuparnos críticamente de hacer copias de seguridad (me fío de quienes alojan ubuntu, me parece un riesgo asumible máxime cuando hacemos branches, donde cada branch local es una copia de seguridad).


Unirse

Para unirse uno no se une al *proyecto*, sino al *grupo* . Esto es raro de narices, pero la idea es que cualquiera puede pillar nuestro código, hacerse un branch personal y eso queda entonces registrado en la lista de código del proyecto. Así puedes colaborar por tu cuenta, sin necesidad de pedir permiso para escribir en los repos, y luego es ponerte de acuerdo con los desarrolladores de un proyecto para subirles el código.

De ahí que usemos equipitos submiembros de ~hdlorean para desarrollar como ~hdlorean-core y ~hdlorean-gui; como cuando subes le dices que lo suba a tu equipo, pero como parte del proyecto hdlorean, allí aparece como "branch: tal, subido por: cual", y es solo cuestión de hacer oficiales a nuestros equipos en el proyecto (la "fuente" de los branches). Cada equipo puede tener varios branches también…


Clave pública / privada

Qué es

Los sistemas de criptografía asimétrica funcionan con dos claves: una pública y otra privada. La clave pública sirve para cifrar el mensaje, y una vez cifrado, sólo puede descifrarse con la clave privada, o viceversa (cifrar con una - descifrar con la otra). La clave pública puede enviarse a cualquier persona (en este caso launchpad), mientras que la clave privada debe quedar en posesión exclusiva del usuario.

Para qué la usa Launchpad

Launchpad utiliza la clave pública para autenticarte. Si no has subido la clave ssh pública, no podrás subir código, aunque sí descargarlo. La clave se sube en https://launchpad.net/~usuario, en el menú de la izquierda aparecerá una entrada para subir la clave SSH. Una vez dentro, aparecerá un recuadro, donde debéis pegar el contenido del fichero de clave pública.

¿Por qué la clave pública para autenticarte? Porque al solo tener tú la privada, cualquier sitio que tenga tu clave pública sabe que el código que firmas ha tenido que ser firmado con tu clave privada, que se supone solo en tu posesión.

Cómo se genera

Abrís una terminal y escribís:

ssh-keygen -t rsa

Os preguntará por el sitio donde guardar la pareja de claves. Si le dáis a enter, las guardará por defecto en /home/usuario/.ssh/. Si tenéis preferencia por otra ruta se le puede especificar. Preguntará después por una passphrase, esto es, una contraseña asociada a tu pareja de claves. Se puede dejar el campo en blanco, pero es un riesgo alto de seguridad, ya que cualquier persona que se incaute de vuestra clave privada podría suplantaros (de otro modo, para usar la privada siempre te pide la passphrase, así que aunque la cogiese alguien no hay problemas si no conocen esta passphrase).
Una vez introducida la passphrase, tendréis en la ruta que hayáis especificado (o en /home/usuario/.ssh si lo dejasteis en default) un fichero llamado id_rsa.pub. El contenido de este fichero es el que tenéis que pegar en la casilla de launchpad.

nota de Eze: también funcionan claves de tipo DSA.


Equipos concretos

[hdlorean-gui]

GUI

[hdlorean-core]

Núcleo de la aplicación. Al integrar db y cambios es cuando estamos definiendo la mayor parte del api. Solo tenemos permiso de escritura adri, salva, mario (como control de calidad) y eze (yo).

[hdlorean-db] Base de datos.

Gestión de las bases de datos del programa.

[hdlorean-watcher] Gestión de cambios

Gestión de cambios recibidos por inotify, journal, etc.

[hdlorean-storage]

Almacenamiento de los datos: xdelta, rsnapshot, etc.

Resumiendo:

En el proyecto quedaría, si esto funciona como debe:

hdlorean/trunk

La integración. Subida al espacio de equipo ~hdlorean . La rama con todo. Se sube a:
bzr+ssh://<usuario>@bazaar.launchpad.net/~hdlorean/hdlorean/nombre-branch (supongo que "en blanco" significa trunk)

hdlorean-gui/gui

GUI. Es un branch de desarrollo del gui subido por el equipo ~hdlorean-gui.
bzr+ssh://<usuario>@bazaar.launchpad.net/~hdlorean-gui/hdlorean/gui (branch de nombre gui)

hdlorean-core/core

Core o backend de la aplicación. Subido e integrado por ~hdlorean-core. OJO CON SUBIR NADA AQUI!!!
bzr+ssh://<usuario>@bazaar.launchpad.net/~hdlorean-core/hdlorean/core *Alternativamente "en blanco" también

hdlorean-db/db

Branch de desarrollo de la base de datos. Separado de hdlorean-core, hay que integrar.
bzr+ssh://<usuario>@bazaar.launchpad.net/~hdlorean-db/hdlorean/db
(db es el nombre del branch -por ejemplo-, hdlorean-db el del equipo)

hdlorean-watcher/watcher

Gestión de cambios (watcher, planificador, etc). También separado
bzr+ssh://<usuario>@bazaar.launchpad.net/~hdlorean-watcher/hdlorean/watcher
(watcher es el nombre del branch -por ejemplo-, hdlorean-watcher el del equipo)

hdlorean-storage/storage

Almacenamiento. Separado de core.
bzr+ssh://<usuario>@bazaar.launchpad.net/~hdlorean-storage/hdlorean/storage
(storage es el nombre del branch -por ejemplo-, hdlorean-storage el del equipo)


Para todos los grupos

No creéis branches desde la página del proyecto!!! Así solo creáis branches personales, y no podéis dar permiso de escritura a nadie!!!
En launchpad todos debemos estar en:

Fuentes

Para ir mentalizándose: propuesta modelo desarrollo.

Como decía en el tuto de bazaar: hay bastante en launchpad sobre su hosting de código: http://help.launchpad.net/FeatureHighlights/BazaarHosting y siguientes (2, 3 )

Iremos ampliando según nos aclaremos…


Comentarios:

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License