huge / repo
Application permettant de stocker des livrables via une API en REST.
v1.1.2
2014-09-05 16:12 UTC
Requires
- php: >=5.3.3
- doctrine/cache: ~1.3.0
- huge/rest: ~1.0.3
- katzgrau/klogger: ~1.0.0
- psr/log: 1.0.0
Requires (Dev)
- guzzle/guzzle: 3.9.1
- phpunit/phpunit: 4.1.4
This package is not auto-updated.
Last update: 2025-02-25 09:32:04 UTC
README
Application permettant de stocker des livrables via une API en REST. Vous pouvez organiser votre stockage en fonction de votre organisation, par exemple :
- multi-instances
- dev. mobile (slave): instance Huge/Repo avec sa base Mongo
- dev. desktop (slave): instance Huge/Repo avec sa base Mongo
- master : instance Huge/Repo avec sa base Mongo et pointe vers les 2 slaves
- une instance
- master : instance Huge/Repo avec sa base Mongo
##Installation
- Télécharger la version d'HugeRepo
- Décompresser
- Modifier la configuration src/main/resources/config.php pour pointer vers votre mongo
- Créer un virtualhost qui pointe vers src/main/webapp
- Plus d'informations dans la rubrique "Configuration"
Fonctionnalités
- Api REST
- GET : récupérer le(s) livrables
- POST : ajout le livrable
- DELETE : supprimer le livrable
- Stockage souple grâce à Mongo
Livrable
- vendorName (obligatoire): Nom du vendor
- projectName (obligatoire): Nom du projet
- version (obligatoire): X.Y.Z (1.0.0-SNAPSHOT par exemple)
- classifier (facultatif): déclinaison de votre livrable (dev, prod, ...)
- sha1 (facultatif) : permet de réaliser une vérification côté serveur
Configuration
- VirtualHost sur src/main/webapp
- Module rewrite obligatoire
- Répertoire log en écriture pour www-data
- src/main/resources/config.php
return array( // nom de l'instance master, slave1, slave2 ... 'instance.name' => 'master', 'mongo.server' => 'mongodb://localhost:27018', 'mongo.dbName' => 'hugeRepo', 'debug' => false, 'memcache.enable' => true, 'memcache.host' => '127.0.0.1', 'memcache.port' => 11211, // liste des slaves 'slaves' => array( /* 'http://slave1.fr' */ ), 'klogger' => array( 'level' => 'warn', 'path' => __DIR__.'/../../../log/' ) );
Ordonner votre stockage
- Possibilité d'installer plusieurs dépôts de livrables
- master
- Redispatch la récupération des livrables (GET du livrable)
- slaves
- master
- Chaque instance est autonome (sa base mongo)
- La seule différence entre master/slave, c'est que le dépôt "master" permet de récupérer un livrable sur un slave
- Pour connaître l'instance utilisée : X-Powered-By: NOM_INSTANCE
- Votre gestionnaire de déploiement se base UNIQUEMENT sur le master
Ajouter un livrable
- Path : /livrable
- Méthode : POST
- Paramètres : attributs du livrable + paramètre "force" avec la valeur "1" pour forcer l'upload
- Accept : application/json
- Description
- Ajout d'un livrable sur l'instance
Télécharger un livrable
- Path : /livrable/{ID} ou /livrable/{vendorName}/{projectName}/{version}/{classifier}
- Méthode : GET
- Accept : application/octet-stream ou /
- Description
- Télécharge un livrable depuis l'instance courante ou depuis une autre instance
Rechercher
- Path : /livrable/search
- Méthode : GET
- Accept : application/json ou /
- Paramètres en GET : vendorName, projectName, version, classifier
- Description
- Recherche * livrables sur l'instance courante
Supprimer
- Path : /livrable/{ID}
- Méthode : DELETE
- Description
- Supprime un livrable sur l'instance courante
Authentification
- Délégué à apache2
Limitations
- Mongo pour le stockage
- Non prise en charge de l'authentification
## Envoyer automatiquement votre livrable
- curl -i http://hugerepo.fr/livrable/ -F file=@/var/www/pays_out.json -F vendorName="Huge" -F projectName="Toto" -F version="1.0.0" -H "Accept: application/json"
Télécharger
## Tests
- VirtualHost sur le répertoire /target/hugeRepo-dev/src/test/webapp
- Variabiliser /src/test/resources/variables.ini
- phing -f build.xml clean test