• Non classé
  • 1

Déployer une librairie sur un JCenter privé

Envie de partager une librairie à vos clients ou à votre équipe, mais pas au monde entier ? Essayez Artifactory !

Nous avons précédemment vu comment déployer notre librairie open-source sur JCenter, le procédé est quasiment le même à l’exception que nous allons cette fois l’envoyer sur nos serveurs au lieu de ceux de bintray.

Vous l’aurez compris, il nous faudra donc une machine afin d’héberger nos artifacts et de les distribuer aux développeurs.

Installer Artifactory

Artifactory est un projet développé par les équipes de Bintray (Jfrog / ceux qui sont aussi derrière JCenter). Il fonctionne exactement comme jcenter d’un point de vue dévelopeur, tout en êtant hebergé sur une de nos machine ou sur un serveur, c’est exactement ce que nous recherchons ici.

https://www.jfrog.com/open-source/

Je vais utiliser dans ce tutoriel une image Docker, en 2017 c’est beaucoup plus simple de déployer une image que d’installer en dur un logiciel 😉

Je recherche dans mon Kitematic « artifactory » (kitematic est un client graphique qui permet de gérer ses images docker, permettant aussi d’accéder au docker-hub, en quelque sorte l’équivalent jcenter de Docker)

Je prend bien soin de démarrer mon image

Je peux enfin récupérer son port d’exécution dans le menu paramètres

Je peux tester que mon Artifactory est bien lancé en me rendant sur http://localhost:32768/

L’access administrateur par défaut est : admin, password

Rendez vous ensuite dans l’onglet Artifacts afin de voir les dépôts (maven) disponibles

On déploiera ici notre librairie dans le libs-release-local

 

Configurer son projet

Il nous faudra importer le plugin gradle com.jfrog.artifactory, pour cela ajoutez la dépendance dans le fichier build.gradle de votre projet

buildscript {
    dependencies {
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1"
    }
}

Puis insérez ces deux lignes en haut du build.gradle de votre module

apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'

Prochaine étape, décrire notre artifact, on aura besoin pour cela de définir :

  • Son package : ‘com.florentchampigny’
  • Son nom : ‘expectanim’
  • Sa version : ‘1.0.0’

Je vais pour cela créer 3 variables, que j’utiliserai par la suite

def projectName = 'expectanim'
def packageName = 'com.florentchampigny'
def libraryVersion = '1.0.0'

Préparons maintenant un petit script pour le plugin maven-publish, afin qu’il connaisse quel artifact déployer sur notre Artifactory. Pour notre cas nous allons envoyer notre fichier ***-release.aar, généré avec la tache gradle assembleRelease :

publishing {
    publications {
        aar(MavenPublication) {
            groupId packageName
            version = libraryVersion
            artifactId projectName

            // Tell maven to prepare the generated "*.aar" file for publishing
            artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
      }
    }
}

Enfin nous devons configurer le plugin com.jfrog.artifactor Pour notre exemple, nous allons envoyer notre artifact sur notre instance locale d’Artifactory (http://localhost:32768/artifactory) et les placer dans notre dépôt libs-release-local.

Notez que j’utiliserai ici pour des questions de rapidité le nom d’utilisateur admin et mot de passe password.

artifactory {
    contextUrl = 'http://localhost:32768/artifactory'
    publish {
        repository {
            // Le nom du dépot sur lequel publier dans notre Artifactory
            repoKey = 'libs-release-local'

            username = "admin"
            password = "password"
        }
        defaults {
            // Tell the Artifactory Plugin which artifacts should be published to Artifactory.
            publications('aar')
            publishArtifacts = true

            // Properties to be attached to the published artifacts.
            properties = ['qa.level': 'basic', 'dev.team': 'core']
            // Publish generated POM files to Artifactory (true by default)
            publishPom = true
        }
    }
}

Dernière étape, lancer la publication, rentrez la commande suivante dans votre terminal

./gradlew assembleRelease generatePomFileForAarPublication artifactoryPublish

Et si tout se passe bien, votre librairie sera ensuite disponible sur votre Artifactory !

Télécharger la librairie depuis un autre projet

Pour permettre aux développeurs d’accéder à votre artifact depuis leur projet, il leur faudra ajouter notre Artifactory comme dépot maven de notre projet, cela se fait en ajoutant cette ligne à leur fichier projet

build.gradle :

allprojects {
    repositories {
        //l'adresse de l'artifactory suivi du nom du dépot
        maven { url "http://localhost:32768/artifactory/libs-release-local" }

        //en option, si vous souhaitez sécuriser votre accès via login / password
        credentials {
            username = "clientLogin"
            password = "clientPassword"
        }
    }
}

Ils pourront alors avoir accès simplement à la librairie depuis leur module :

dependencies {
    compile 'com.florentchampigny:expectanim:1.0.0'
}

Vous savez maintenant partager une librairie en mode privé !
Plus qu’a envoyer l’adresse de votre repository à votre client ou à vos équipes de développeurs 🙂

Vous aimerez aussi...

1 réponse

  1. kepoya dit :

    great nice post . i like you article Judi Bola

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Recevez un ebook GRATUIT !

Nous vous avons créé un ebook pour vous remercier de votre fidélité. Retrouvez les 10 librairies indispensables pour Android. Pour cela rien de plus simple vous avez juste à renseigner votre email, vous recevrez un mail de confirmation (pour que l'on vérifie que vous n'êtes pas un robot), il suffira de vous inscrire à la liste et vous recevrez l'Ebook quelques instant après (peut prendre un petit peu de temps car vous êtes beaucoup à le vouloir).
Votre adresse email
Secure and Spam free...