Esta guía documenta la integración con Artifactory interno para publicación y consumo de joko-security.
- URL Base: https://artifactory.example.com/artifactory/
- Web UI: https://artifactory.example.com/artifactory/webapp/
- Repositorio Releases:
libs-release - Repositorio Snapshots:
libs-snapshot
- Cuenta de usuario en tu Artifactory
- Permisos de deploy en los repositorios libs-release y libs-snapshot
- Conectividad a tu red interna (VPN si estás remoto)
Contactar a tu equipo de DevOps:
- Solicitar usuario y password de Artifactory
- Solicitar permisos de deploy (write) en:
- libs-release
- libs-snapshot
# Agregar a ~/.bashrc o ~/.zshrc
export ARTIFACTORY_USER="your-username"
export ARTIFACTORY_PASSWORD="tu-password"
export ARTIFACTORY_BASE_URL="https://artifactory.example.com/artifactory"Recargar configuración:
source ~/.bashrc # o source ~/.zshrcCopiar settings.xml:
cp settings.xml.example ~/.m2/settings.xmlEl archivo debe tener:
<servers>
<server>
<id>central</id>
<username>${env.ARTIFACTORY_USER}</username>
<password>${env.ARTIFACTORY_PASSWORD}</password>
</server>
<server>
<id>snapshots</id>
<username>${env.ARTIFACTORY_USER}</username>
<password>${env.ARTIFACTORY_PASSWORD}</password>
</server>
</servers># Test de conectividad
curl -u $ARTIFACTORY_USER:$ARTIFACTORY_PASSWORD \
"https://artifactory.example.com/artifactory/api/system/ping"
# Debería retornar: OK# Verificar versión actual es SNAPSHOT
./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout
# Debe terminar en -SNAPSHOT (ej: 2.0.0-SNAPSHOT)
# Publicar
./publish-artifactory.sh snapshot# 1. Actualizar versión (remover -SNAPSHOT)
./publish.sh version 2.0.0
# 2. Verificar cambios
git diff pom.xml
# 3. Commit y tag
git add pom.xml */pom.xml
git commit -m "chore: Release 2.0.0"
git tag -a v2.0.0 -m "Release 2.0.0"
# 4. Publicar
./publish-artifactory.sh release
# 5. Push (opcional, después de verificar)
git push origin develop --tagsEn el proyecto consumidor:
pom.xml:
<repositories>
<repository>
<id>central</id>
<url>https://artifactory.example.com/artifactory/libs-release</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>io.github.jokoframework</groupId>
<artifactId>joko-security-starter</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>~/.m2/settings.xml (mismo que para publicar):
<servers>
<server>
<id>central</id>
<username>${env.ARTIFACTORY_USER}</username>
<password>${env.ARTIFACTORY_PASSWORD}</password>
</server>
</servers>build.gradle:
repositories {
maven {
url "https://artifactory.example.com/artifactory/libs-release"
credentials {
username = System.getenv("ARTIFACTORY_USER")
password = System.getenv("ARTIFACTORY_PASSWORD")
}
}
}
dependencies {
implementation 'io.github.jokoframework:joko-security-starter:2.0.0'
}- Abrir: https://artifactory.example.com/artifactory/webapp/
- Login con credenciales
- Ir a: Artifacts → libs-release → io → github → jokoframework
- Verificar presencia de joko-security-*
# Buscar artefacto específico
curl -u $ARTIFACTORY_USER:$ARTIFACTORY_PASSWORD \
"https://artifactory.example.com/artifactory/api/storage/libs-release/io/github/jokoframework/joko-security-starter/2.0.0"
# Listar todas las versiones
curl -u $ARTIFACTORY_USER:$ARTIFACTORY_PASSWORD \
"https://artifactory.example.com/artifactory/api/search/versions?g=io.github.jokoframework&a=joko-security-starter"| Aspecto | GitHub Packages | Artifactory interno |
|---|---|---|
| Acceso | Público (con token) | Internal (VPN) |
| Autenticación | GitHub token | User/password |
| Uso | Proyectos open source | Internal projects |
| Disponibilidad | Siempre (internet) | Internal network + VPN |
| Costo | Gratis (GitHub Free) | Infraestructura interna |
| Permisos | Por repositorio GitHub | Por usuario Artifactory |
- Usar snapshots para trabajo en progreso
- Publicar frecuentemente para compartir cambios con el equipo
- Verificar antes de publicar:
./mvnw clean test
- Crear releases solo de versiones estables
- Siempre crear tag Git con la versión
- Probar localmente antes de publicar
- Documentar cambios en CHANGELOG.md
- Publicar dual (GitHub + Artifactory) para redundancia
- NO hardcodear credenciales en archivos
- Usar variables de entorno siempre
- NO commitear ~/.m2/settings.xml al repositorio
- Rotar passwords periódicamente
- Usar VPN cuando trabajes remoto
Síntomas:
Connection timed out
Soluciones:
- Verificar VPN conectada (si remoto)
- Ping al servidor:
ping artifactory.example.com - Verificar URL correcta
Síntomas:
status code: 401, reason phrase: Unauthorized
Soluciones:
- Verificar credenciales:
echo $ARTIFACTORY_USER echo $ARTIFACTORY_PASSWORD
- Probar login manual en web UI
- Verificar settings.xml configurado
Síntomas:
status code: 403, reason phrase: Forbidden
Soluciones:
- Verificar permisos de deploy en Artifactory
- Contactar admin para solicitar permisos
- Verificar que publicas al repositorio correcto
Síntomas:
Failed to transfer file... Return code is: 409
Soluciones:
- No se puede sobrescribir releases (es correcto!)
- Para snapshots: Verificar versión en pom.xml termina en -SNAPSHOT
- Para releases: Incrementar versión
pipeline {
environment {
ARTIFACTORY_USER = credentials('artifactory-user')
ARTIFACTORY_PASSWORD = credentials('artifactory-password')
}
stages {
stage('Publish') {
steps {
sh './publish-artifactory.sh release'
}
}
}
}publish:
script:
- export ARTIFACTORY_USER=$CI_ARTIFACTORY_USER
- export ARTIFACTORY_PASSWORD=$CI_ARTIFACTORY_PASSWORD
- ./publish-artifactory.sh release
only:
- tags- name: Publish to Artifactory
env:
ARTIFACTORY_USER: ${{ secrets.ARTIFACTORY_USER }}
ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
run: ./publish-artifactory.sh release# 1. Trabajar en feature
git checkout -b feature/nueva-funcionalidad
# 2. Hacer cambios y commits
git add .
git commit -m "feat: nueva funcionalidad"
# 3. Publicar snapshot para compartir
./publish-artifactory.sh snapshot
# 4. Otros desarrolladores pueden usar
# Versión: 2.0.0-SNAPSHOT (actualiza automáticamente)# 1. Preparar release
git checkout develop
git pull
# 2. Actualizar versión
./publish.sh version 2.1.0
# 3. Commit y tag
git add pom.xml */pom.xml
git commit -m "chore: Release 2.1.0"
git tag -a v2.1.0 -m "Release 2.1.0"
# 4. Publicar a ambos destinos
./publish.sh github # GitHub Packages
./publish-artifactory.sh release # Artifactory
# 5. Push
git push origin develop --tags
# 6. Preparar siguiente desarrollo
./publish.sh version 2.2.0-SNAPSHOT
git add pom.xml */pom.xml
git commit -m "chore: Prepare next development iteration"
git push- Administración Artifactory: tu equipo de DevOps
- Soporte técnico: joko-security maintainers
- Documentación: docs/PACKAGING_GUIDE.md
Última actualización: 2024-12-29 Versión: 1.0 Mantenedor: Equipo Joko Security