Artifact (artefaktum) — a build folyamat végeredménye, amely telepíthető a céleszközre vagy használható függőségként más projektekben. Az artefaktumok közé tartoznak a mobil alkalmazások APK és IPA fájljai, Docker-képek, JAR/WAR könyvtárak és telepítőcsomagok. A JFrog State of Software Supply Chain, 2025 szerint a szervezetek akár 10 terabájt artefaktumot is tárolhatnak egyetlen regiszterben, ami kritikussá teszi a kezelőrendszereket.
Főbb pontok
Artifact (build artefaktum) — a forráskód fordításának eredménye, készen áll a telepítésre vagy függőségként való használatra. A build folyamat a forrásfájlokat (Java, Kotlin, Swift, C++ és mások) bináris csomagokká alakítja, amelyek a céleszközön vagy szerveren futtathatók.
Az artefaktum fogalma túlmutat a futtatható fájlokon. Például a JAR könyvtár — egy artefaktum, amelyet függőségként használnak más projektekben. A Docker-kép — egy artefaktum, amely az alkalmazást és környezetét tartalmazza. Még a teszteredményekről szóló jelentés is artefaktumnak tekinthető a CI/CD kontextusában.
A modern fejlesztés nagyvállalatoknál több százezer artefaktum kezelését foglalja magában. A Google DORA összekapcsolja az artefaktumkezelés érettségét az általános DevOps hatékonysággal — a verziókezelő rendszereket használó csapatok gyorsabban adnak ki verziókat és ritkábban találkoznak telepítési problémákkal.
Minden artefaktum több szakaszon megy keresztül: létrehozás (build, fordítás), validáció (tesztelés, biztonsági ellenőrzés), tárolás (artefaktum regiszter), terjesztés (közzététel letöltésre) és archiválás vagy törlés (amikor a verzió elavulttá válik).
A különböző platformok és technológiák eltérő artefaktum formátumokat hoznak létre. A formátumok megértése szükséges a CI/CD pipeline helyes konfigurálásához és a tárolórendszer kiválasztásához.
APK (Android Package Kit) — hagyományos telepítőcsomag formátum. AAB (Android App Bundle) — modern formátum a Google Play-ben történő közzétételhez, amely csak az adott eszköz számára szükséges erőforrásokat tartalmazza. Az AAB csökkenti a telepített alkalmazás méretét átlagosan 15-20%-kal az univerzális APK-hoz képest.
IPA (iOS App Store Package) — kódot és erőforrásokat tartalmazó archívum iOS eszközökhöz. XCArchive — köztes artefaktum, amelyet az Xcode hoz létre, és amelyből a végleges IPA exportálásra kerül. dSYM — hibakeresési fájl, amely a crash naplók szimbolizálásához szükséges.
| Platform | Formátum | Kiterjesztés | Rendeltetés |
|---|---|---|---|
| Android | APK | .apk | Telepítőcsomag |
| Android | AAB | .aab | Közzététel a Google Play-ben |
| iOS | IPA | .ipa | Telepítőcsomag |
| iOS | dSYM | .dSYM.zip | Hibakeresési szimbólumok |
| Flutter | Bundle | .zip, .tar.gz | Web/Desktop build-ek |
JAR (Java ARchive) — Java/Kotlin könyvtárakhoz. AAR (Android ARchive) — Android könyvtárakhoz erőforrásokkal. Docker-képek — konténer artefaktumok mikroszolgáltatásokhoz. Minden típusnak saját regisztere és verziókezelési szabályai vannak.
Az artefaktumok — összekötő kapocs a pipeline szakaszai között. Minden szakasz felhasználja az előző artefaktumait és újakat hoz létre. Ennek a folyamatnak a megértése kritikus a hatékony CI/CD konfigurálásához.
A tipikus áramlás a következő: commit → a build szerver lefordítja a kódot és létrehoz egy nem optimalizált artefaktumot → a teszt artefaktumot a tesztek futtatásához használják → siker esetén létrejön a kiadási artefaktum → aláírásra kerül és közzéteszik az artefaktum regiszterben → a regiszterből az artefaktumot kihozzák telepítésre staging és production környezetbe. Minden szakaszok közötti átmenetet integritás- és követelmény-ellenőrzés kísér.
A pipeline több artefaktumot is létrehozhat különböző szakaszokban. Debug artefaktumok hibakeresési információkat tartalmaznak, nem optimalizáltak — gyorsan épülnek a tesztekhez, a kiadási artefaktumok — véglegesek, optimalizálással és obfuszkációval. A CI rendszernek meg kell különböztetnie őket, és megfelelő tárolási szabályzatot kell alkalmaznia minden típusra.
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
Fontos különbséget tenni a függőségi gyorsítótár és a build artefaktumok között. A gyorsítótár (Gradle cache, CocoaPods cache) felgyorsítja az ismételt build-eket, de nem telepítésre szolgál. Az artefaktumok — a terjesztésre kész végtermék. A gyorsítótárhoz állítson be néhány napos TTL-t, az artefaktumokhoz heteket vagy hónapokat.
Az artefaktumokat nem szabad a build szerveren tárolni — erre specializált rendszerek léteznek. A Repository Manager központosított tárolást, indexelést, hozzáférés-ellenőrzést és CI/CD eszközökkel való integrációt biztosít.
JFrog Artifactory — univerzális menedzser, amely támogatja a Maven, Gradle, Docker, NuGet, npm, APT, YUM rendszereket. Sonatype Nexus — nyílt forráskódú alternatíva a fő formátumok támogatásával. GitHub Packages — beépített regiszter a GitHub-ban, kényelmes a már GitHub-ot használó csapatok számára. GitLab Container Registry — Docker-képekhez.
Fő tényezők: támogatott formátumok, licencmodell (open-source/enterprise), integráció a meglévő CI/CD-vel, régiók közötti replikáció lehetősége, automatikus régi verziók tisztítási szabályzatának megléte és megfelelőségi jelentések.
// Jenkins pipeline — APK közzététele az Artifactory-ban
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)
A megfelelő verziókezelési stratégia kritikus a build-ek reprodukálhatóságához és a változások nyomon követéséhez. Verziókezelés nélkül lehetetlen meghatározni, hogy a kód mely verziója okozott problémát élesben.
MAJOR.MINOR.PATCH szabvány: a MAJOR inkompatibilis API-változásoknál változik, a MINOR — visszafelé kompatibilis funkciók hozzáadásakor, a PATCH — visszafelé kompatibilis javításoknál. CI/CD esetén build metaadatok kerülnek a verzióhoz: 2.4.1+build.20260703.1. Ez lehetővé teszi annak pontos meghatározását, hogy melyik commit hozta létre az adott artefaktumot és mikor készült.
Minden artefaktumnak tartalmaznia kell metaadatokat a származásáról: commit SHA, CI build szám, ág neve, build dátuma. Ezek az információk az artefaktum manifestjében kerülnek rögzítésre, és lehetővé teszik a létrehozás kontextusának bármikori rekonstruálását. Visszakövethetőség nélkül az artefaktumokkal való munka verzió-találgatássá válik, ami elfogadhatatlan az auditkövetelményekkel rendelkező éles rendszerek esetében.
Név konvenció: {project}-{module}-{version}.{ext}. Például: `messaging-sdk-2.4.1.aar` vagy `app-release-2.4.1.apk`. A build szerver automatikusan generálhat verziót a Git tag vagy a CI build szám alapján.
A Maven/Gradle artefaktum regiszterekben megkülönböztetjük a release verziókat (rögzített, megváltoztathatatlan) és a snapshot verziókat (aktuális fejlesztés, felülírható). A CI/CD pipeline-okban a snapshot artefaktumok kényelmesek a fejlesztéshez, de élesben csak release verziókat szabad használni.
Az artefaktumok — a szoftverellátási lánc (software supply chain) kulcselemei. Az artefaktum kompromittálódása rosszindulatú kód bejutásához vezethet az éles környezetbe. Az artefaktumok biztonsága több védelmi szintet foglal magában.
Az APK fájlokat jarsigner vagy apksigner írja alá; az IPA-t — Apple tanúsítvány; a Docker-képeket — Content Trust (Notary) a Dockertől. Az aláírás garantálja az integritást és megerősíti az artefaktum szerzőjét. A CI/CD pipeline-nak tartalmaznia kell az összes harmadik féltől származó függőség aláírásának ellenőrzését.
A közzététel előtt az artefaktumot automatikus szkennerek ellenőrzik: Snyk, Trivy, Sonatype Nexus IQ, GitHub Dependabot. Ezek elemzik a bevont függőségeket, a használt könyvtárak verzióit és az ismert CVE sebezhetőségeket. Kritikus sebezhetőség észlelése esetén a kiadás azonnal blokkolásra kerül a fejlesztők általi javításig.
SLSA (Supply chain Levels for Software Artifacts) — biztonsági keretrendszer, amely a bizalmi szinteket határozza meg SLSA 1 (alap) és SLSA 4 (maximális) között. A build szervernek provenance attestation-t — kriptográfiailag aláírt tanúsítványt kell generálnia arról, hogyan és milyen kódból épült az artefaktum.
Gyakran ismételt kérdések
Az APK — univerzális csomag minden erőforrással, az AAB — moduláris formátum, amelyben a Google Play csak a szükséges erőforrásokat szállítja le az adott eszközhöz. Az AAB kisebb méretű, és a Google új alkalmazásokhoz ajánlja.
A legjobb specializált rendszerekben (Artifactory, Nexus, GitHub Packages), nem a CI szerveren vagy a kódtárban. Ezek verziókezelést, hozzáférés-ellenőrzést, CI/CD integrációt és automatikus régi verziók tisztítását biztosítják.
Igen, minden éles használatra szánt artefaktumot alá kell írni. Mobil alkalmazások esetében az aláírás kötelező az eszközökre történő telepítéshez és az alkalmazásboltokban való közzétételhez.
Használjon Git tag-et vagy CI build számot. Automatikusan generáljon verziót a MAJOR.MINOR.PATCH+build.N sablon szerint, ahol N a CI build sorszáma vagy commit SHA.
Állítson be automatikus tisztítási szabályzatot: tárolja az utolsó 10-20 release és 30-50 snapshot verziót. A régi verziók archiválhatók hideg tárolóban (S3 Glacier, Google Coldline) a megfelelőség érdekében.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is