Artifact Repository Manager Ad-hoc

1. Introduction

Objetivo

Muy frecuentemente los desarrollos de aplicaciones móviles se vuelven muy difíciles de mantener puesto los desarrollos muchas veces utilizan librerías ad-hocs recicladas.

Depencencias

Comenzamos primero configurando nuestro entorno de pruebas.

Download Artifactory Community

Una vez descargado y instalado en nuestro servidor o en el mejor de los casos usar Docker:

Download Docker Artifactory

2. Getting set up

Para ello expongo en este sencillo tutorial una manera eficiente de tener un repositorio de artefactos software in-home, con Jfrog - Artefactory.

Download the Code

Click en el link de descarga para obtener el código base de este tutorial:

Download source code

What you'll learn

What you'll need

3. Testing

Run test cases

Primero verificamos que estén sus pruebas unitarias de la librería funcionando correctamente:

Comprobamos las dependencias

Ejecutamos las pruebas

Vemos nuestros resultados en consola o mediante SonarQube.

4. Upload library/api

En la ruta de nuestro proyecto Android, conectamos los plugins del JFrog Artefactory:

classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1"

En el gradle build del módulo api añadimos en el top:

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

Definimos variables constantes:

def packageName = 'fudi.freddy.api'
def libraryVersion = '1.0.a'

Sobre escribimos el task publishing del motor Gradlew:

publishing {
   publications {
       aar(MavenPublication) {
           groupId packageName
           version = libraryVersion
           artifactId project.getName()
           // Preparamos la librería *.aar, ojo al usar flavors
           ("$buildDir/outputs/aar/${project.getName()}-release.aar")
       }
   }
}

Creamos un task para empaquetar, se puede configurar hasta niveles de flavors:

artifactory {
   contextUrl = 'http://localhost:8081/artifactory'
   publish {
       repository {
           // Access keys to repo
           repoKey = 'libs-release-local'
           username = "admin"
           password = "123qweASD"
       }
       defaults {
           // which artifacts should be published
           publications('aar')
           publishArtifacts = true

           properties = ['qa.level': 'basic', 'dev.team': 'core']
           // Publish generated POM files
           publishPom = true
       }
   }
}

5. Upload Artifacts

Desde una terminal arrancamos el repositorio de aplicaciones:

Una vez acabado su configuración se lanzará en el puerto 8081 (si desea cambiarlo usar el archivo tomcat/conf/server.xml)

6. Repository Configuration

Nos pedirá crear un password de seguridad de acceso, como en la mayoría de servidores podremos configurar más adelante

El tipo de arquitectura del repositorio (para nosotros maven):

Obtendremos por fin nuestro dashboard del repositorio de apis:

7. Upload Library

Ahora enviamos nuestra versión al repositorio de apis mediante los siguientes comandos en el terminal

# construimos la libraría
./gradlew clean build
# construimos el artefacto con su interfaz, su respectivo archivo pom y enseguida lo publicamos en el repositorio
./gradlew assembleRelease generatePomFileForAarPublication artifactoryPublish

En el panel-menu del Artifactory buscamos la librería:

En JFrog-Artefactory, podremos configurar y mantener todos nuestros artefactos como también nuestros permisos de accesos. Nuestro panel:

  • Panel de Inicio.
  • Listado de artefactos..
  • Paquetes específicos
  • Búsqueda de todos los artefactos en todos nuestros grupos.
  • Nuestro logs de construcciones
  • Administración de accesos..

Listado de artefactos

Acá se podrá visualizar el Group ID: fudi.freddy.api, el Artifact ID: api, y la correspondiente versión: 1.0.a.

8. Download library/api

De esta manera puede ser usada en cualquier proyecto dentro de la organización como cualquier librería de maven, lo primero es determinar de dónde va a obtener las apis.

Dentro de la configuración de la aplicación direccionamos el repositorio maven:

repositories {
    maven { url "http://localhost:8081/artifactory/libs-release-local" }
}

y cambiamos la dependencia de nuestra librería a la del repositorio:

//compile project(':api')
compile 'fudi.freddy.api:api:1.0.a'

9. License

by Romell Domínguez

Copyright 2018 Romell D.Z.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and limitations under the License.