Artifact en el desarrollo de aplicaciones: qué es, tipos y cómo gestionar

Autor: IT Sectr Publicado: 2026-04-12 Tiempo de lectura: 8 min

Un artifact (artefacto) es el resultado final de un proceso de compilación que puede desplegarse en un dispositivo destino o utilizarse como dependencia en otros proyectos. Los artefactos incluyen archivos APK e IPA de aplicaciones móviles, imágenes Docker, bibliotecas JAR/WAR y paquetes de instalación. Según el JFrog State of Software Supply Chain, 2025, las organizaciones pueden almacenar hasta 10 terabytes de artefactos en un solo registro, lo que hace que los sistemas de gestión de artefactos sean críticamente importantes.

Puntos clave

  • Artifact es un archivo de salida de compilación que contiene código ejecutable, recursos y metadatos para el despliegue o la distribución.
  • Tipos de artefactos — APK/AAB para Android, IPA para iOS, JAR/WAR para servicios Java, imágenes Docker, paquetes NuGet.
  • El versionado de artefactos permite determinar exactamente qué versión del código se está ejecutando en producción en cualquier momento.
  • Los repositorios de artefactos (Artifactory, Nexus, Docker Hub) proporcionan gestión centralizada, control de versiones y control de acceso.
  • La seguridad de los artefactos incluye firma, escaneo de vulnerabilidades y verificación de integridad (checksum).

Qué es un Artifact en el desarrollo

Un artifact (artefacto de compilación) es el resultado de compilar el código fuente, listo para el despliegue o su uso como dependencia. El proceso de compilación transforma los archivos fuente (Java, Kotlin, Swift, C++ y otros) en paquetes binarios que pueden ejecutarse en un dispositivo o servidor destino.

El concepto de artefacto va más allá de los archivos ejecutables. Por ejemplo, una biblioteca JAR es un artefacto utilizado como dependencia en otros proyectos. Una imagen Docker es un artefacto que contiene la aplicación y su entorno. Incluso un informe de cobertura de pruebas puede considerarse un artefacto en el contexto de CI/CD.

El desarrollo moderno en grandes empresas implica la gestión de cientos de miles de artefactos. Google DORA vincula la madurez de la gestión de artefactos con la eficacia general de DevOps: los equipos que utilizan registros de artefactos lanzan versiones más rápido y encuentran menos problemas de despliegue.

Ciclo de vida del artefacto

Cada artefacto pasa por varias etapas: creación (compilación), validación (pruebas, verificaciones de seguridad), almacenamiento (registro de artefactos), distribución (publicación para descarga) y archivado o eliminación (cuando la versión queda obsoleta).

Tipos de artefactos en el desarrollo móvil

Diferentes plataformas y tecnologías generan diferentes formatos de artefactos. Comprender los formatos es esencial para configurar correctamente el pipeline CI/CD y elegir un sistema de almacenamiento.

Artefactos Android

APK (Android Package Kit) es el formato tradicional de paquete de instalación. AAB (Android App Bundle) es un formato moderno para publicar en Google Play, que contiene solo los recursos necesarios para un dispositivo específico. AAB reduce el tamaño de la aplicación instalada en un promedio del 15-20% en comparación con un APK universal.

Artefactos iOS

IPA (iOS App Store Package) es un archivo con código y recursos para dispositivos iOS. XCArchive es un artefacto intermedio creado por Xcode, a partir del cual se exporta el IPA final. dSYM es un archivo de símbolos de depuración necesario para la simbolización de registros de fallos.

PlataformaFormatoExtensiónPropósito
AndroidAPK.apkPaquete de instalación
AndroidAAB.aabPublicación en Google Play
iOSIPA.ipaPaquete de instalación
iOSdSYM.dSYM.zipSímbolos de depuración
FlutterBundle.zip, .tar.gzCompilaciones Web/Desktop

Artefactos de proyectos de servidor y bibliotecas

JAR (Java ARchive) — para bibliotecas Java/Kotlin. AAR (Android ARchive) — para bibliotecas Android con recursos. Imágenes Docker — artefactos contenedores para microservicios. Cada tipo tiene su propio registro y reglas de gestión de versiones.

Artefactos en el pipeline CI/CD

Los artefactos son el vínculo entre las etapas del pipeline. Cada etapa consume artefactos de la anterior y produce otros nuevos. Comprender este flujo es fundamental para configurar un pipeline CI/CD eficaz.

Flujo de artefactos en el pipeline

Un flujo típico incluye: commit -> el servidor de compilación compila el código y crea un artefacto no optimizado -> el artefacto de prueba se utiliza para ejecutar pruebas -> en caso de éxito, se crea un artefacto de lanzamiento -> se firma y publica en el registro de artefactos -> el artefacto se obtiene del registro para el despliegue en staging y producción. Cada transición entre etapas va acompañada de una verificación de integridad y cumplimiento de requisitos.

Artefactos intermedios y finales

El pipeline puede crear múltiples artefactos en diferentes etapas. Los artefactos de depuración contienen información de depuración, los no optimizados se compilan rápidamente para pruebas, los artefactos de lanzamiento son finales, con optimización y ofuscación. El sistema CI debe poder distinguirlos y aplicar políticas de retención adecuadas para cada tipo.

yaml
name: Artifact Flow
on: [push]

jobs:
  build-debug:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./gradlew assembleDebug
      - uses: actions/upload-artifact@v4
        with:
          name: debug-apk
          path: app/build/outputs/apk/debug/app-debug.apk
          retention-days: 7

  test:
    needs: build-debug
    runs-on: ubuntu-latest
    steps:
      - uses: actions/download-artifact@v4
        with:
          name: debug-apk
      - run: ./gradlew testDebugUnitTest

  build-release:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./gradlew assembleRelease
      - uses: actions/upload-artifact@v4
        with:
          name: release-apk
          path: app/build/outputs/apk/release/app-release.apk
          retention-days: 90

Caché vs Artifact

Es importante distinguir entre la caché de dependencias y los artefactos de compilación. La caché (caché de Gradle, caché de CocoaPods) acelera las compilaciones repetidas pero no está destinada al despliegue. Los artefactos son el producto final, listo para su distribución. Establezca un TTL de varios días para la caché y de semanas o meses para los artefactos.

Repositorios de artefactos

Los artefactos no deben almacenarse en el servidor de compilación; existen sistemas especializados para este fin. Un Repository Manager proporciona almacenamiento centralizado, indexación, control de acceso e integración con herramientas CI/CD.

Registros de artefactos populares

JFrog Artifactory — un gestor universal que admite Maven, Gradle, Docker, NuGet, npm, APT, YUM. Sonatype Nexus — una alternativa de código abierto que admite los principales formatos. GitHub Packages — un registro integrado en GitHub, conveniente para equipos que ya usan GitHub. GitLab Container Registry — para imágenes Docker.

Criterios de selección del registro

Factores clave: formatos admitidos, modelo de licencia (código abierto/empresarial), integración con CI/CD existente, capacidades de replicación entre regiones, disponibilidad de políticas de limpieza automática de versiones antiguas e informes de cumplimiento.

groovy
// Jenkins pipeline — publicación de APK en Artifactory
def server = Artifactory.newServer(
    url: 'https://artifactory.company.com',
    credentialsId: 'artifactory-api-key'
)

def uploadSpec = """
{
  "files": [
    {
      "pattern": "app/build/outputs/apk/release/*.apk",
      "target": "mobile-apps/android/release/""
    }
  ]
}
"""
server.upload(uploadSpec)

Versionado y nomenclatura

Una estrategia adecuada de versionado de artefactos es fundamental para la reproducibilidad de las compilaciones y el seguimiento de cambios. Sin versionado, es imposible determinar qué versión del código causó un problema en producción.

Versionado Semántico (SemVer)

El estándar MAJOR.MINOR.PATCH: MAJOR cambia con cambios incompatibles en la API, MINOR con adiciones de funcionalidad compatibles hacia atrás, PATCH con correcciones de errores compatibles hacia atrás. Para CI/CD, se añaden metadatos de compilación a la versión: 2.4.1+build.20260703.1. Esto permite determinar exactamente qué commit produjo un artefacto específico y cuándo se creó.

Trazabilidad — vínculo con Git

Cada artefacto debe contener metadatos sobre su origen: SHA del commit, número de compilación CI, nombre de la rama, fecha de compilación. Esta información se registra en el manifiesto del artefacto y permite reconstruir el contexto de su creación en cualquier momento. Sin trazabilidad, trabajar con artefactos se convierte en adivinar versiones, lo que es inaceptable para sistemas de producción con requisitos de auditoría.

Nomenclatura de artefactos

Convención de nombre: {project}-{module}-{version}.{ext}. Por ejemplo: messaging-sdk-2.4.1.aar o app-release-2.4.1.apk. El servidor de compilación puede generar automáticamente una versión basada en una etiqueta Git o el número de compilación del sistema CI.

  • Use la etiqueta Git como fuente de versión — esto vincula el artefacto con un estado de código específico
  • Agregue el SHA del commit a los metadatos para una identificación precisa durante la depuración
  • Configure la política de retención — conserve las últimas N versiones, archive el resto

Snapshot vs Release

En los registros de artefactos Maven/Gradle se distinguen versiones de lanzamiento (fijas, inmutables) y versiones snapshot (desarrollo actual, pueden sobrescribirse). En los pipelines CI/CD, los artefactos snapshot son convenientes para el desarrollo, pero en producción solo deben usarse versiones de lanzamiento.

Seguridad de los artefactos

Los artefactos son un elemento clave de la cadena de suministro de software. El compromiso de un artefacto puede provocar la entrada de código malicioso en producción. La seguridad de los artefactos incluye varios niveles de protección.

Firma de artefactos

Los archivos APK se firman con jarsigner o apksigner; los IPA se firman con un certificado de Apple; las imágenes Docker se firman con Content Trust (Notary) de Docker. La firma garantiza la integridad y confirma el autor del artefacto. El pipeline CI/CD debe incluir verificación de firmas de todas las dependencias de terceros.

Escaneo de vulnerabilidades

Antes de la publicación, el artefacto se verifica con escáneres automatizados: Snyk, Trivy, Sonatype Nexus IQ, GitHub Dependabot. Analizan las dependencias incluidas, las versiones de las bibliotecas utilizadas y las vulnerabilidades CVE conocidas. Si se detecta una vulnerabilidad crítica, el lanzamiento se bloquea inmediatamente hasta que los desarrolladores la solucionen.

Niveles de cadena de suministro

SLSA (Supply chain Levels for Software Artifacts) es un marco de seguridad que define niveles de confianza desde SLSA 1 (básico) hasta SLSA 4 (máximo). El servidor de compilación debe generar una attestación de procedencia: una declaración firmada criptográficamente sobre cómo y a partir de qué código se creó el artefacto.

Preguntas frecuentes

¿En qué se diferencia APK de AAB?

APK es un paquete universal con todos los recursos, mientras que AAB es un formato modular donde Google Play entrega solo los recursos necesarios para un dispositivo específico. AAB es de menor tamaño y Google lo recomienda para nuevas aplicaciones.

¿Dónde es mejor almacenar los artefactos de compilación?

Preferiblemente en sistemas especializados (Artifactory, Nexus, GitHub Packages), en lugar de en un servidor CI o en un repositorio de código. Proporcionan versionado, control de acceso, integración con CI/CD y limpieza automática de versiones antiguas.

¿Es necesario firmar cada artefacto?

Sí, todos los artefactos destinados a uso en producción deben estar firmados. Para aplicaciones móviles, la firma es obligatoria para la instalación en dispositivos y la publicación en tiendas.

¿Cómo versionar artefactos en CI/CD?

Use una etiqueta Git o el número de compilación del sistema CI. Genere automáticamente la versión con la plantilla MAJOR.MINOR.PATCH+build.N, donde N es el número de compilación CI secuencial o el SHA del commit.

¿Con qué frecuencia deben limpiarse los artefactos antiguos?

Configure una política de limpieza automática: conserve las últimas 10-20 versiones de lanzamiento y 30-50 versiones snapshot. Las versiones antiguas se pueden archivar en almacenamiento en frío (S3 Glacier, Google Coldline) para cumplimiento normativo.

Resumen

  • Artifact es el producto final de la compilación: APK, IPA, AAR, imagen Docker o biblioteca JAR, listo para el despliegue o uso.
  • Los formatos de artefactos varían según la plataforma: Android usa APK/AAB, iOS usa IPA, el lado del servidor usa JAR/Docker.
  • Los repositorios de artefactos (Artifactory, Nexus) centralizan la gestión, proporcionando control de versiones y acceso.
  • El versionado con SemVer y la vinculación a etiquetas Git garantiza la reproducibilidad de las compilaciones y simplifica la depuración.
  • La seguridad incluye firma, escaneo de vulnerabilidades y el marco SLSA para la protección de la cadena de suministro.
  • La política de retención evita el desbordamiento del almacenamiento en disco sin perder versiones críticas de artefactos.
  • Snapshot vs Release — separarlos ayuda a distinguir las versiones en desarrollo de los lanzamientos estables, asegurando que solo las compilaciones verificadas y fijadas lleguen a producción.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también