Artifact (artefakt) — bu yig'ilish jarayonining yakuniy natijasi bo'lib, maqsadli qurilmada joylashtirilishi yoki boshqa loyihalarda bog'liqlik sifatida ishlatilishi mumkin. Artefaktlarga mobil ilovalarning APK va IPA fayllari, Docker tasvirlari, JAR/WAR kutubxonalari va o'rnatish paketlari kiradi. JFrog State of Software Supply Chain, 2025 ma'lumotlariga ko'ra, tashkilotlar bitta reestrda 10 terabaytgacha artefakt saqlashi mumkin, bu esa ularni boshqarish tizimlarini muhim ahamiyatga ega qiladi.
Asosiy fikrlar
Artifact (yig'ilish artefakti) — manba kodini kompilyatsiya qilish natijasi bo'lib, joylashtirishga yoki bog'liqlik sifatida foydalanishga tayyor. Yig'ilish jarayoni manba fayllarini (Java, Kotlin, Swift, C++ va boshqalar) maqsadli qurilmada yoki serverda ishga tushirilishi mumkin bo'lgan ikkilik paketlarga aylantiradi.
Artefakt tushunchasi bajariladigan fayllardan tashqariga chiqadi. Masalan, JAR kutubxonasi — boshqa loyihalarda bog'liqlik sifatida ishlatiladigan artefakt. Docker tasviri — ilova va uning muhitini o'z ichiga olgan artefakt. Hatto test qamrovi hisoboti CI/CD kontekstida artefakt hisoblanishi mumkin.
Yirik kompaniyalarda zamonaviy ishlab chiqish yuz minglab artefaktlarni boshqarishni o'z ichiga oladi. Google DORA artefaktlarni boshqarishning yetukligini DevOps umumiy samaradorligi bilan bog'laydi — artefakt reestridan foydalanadigan jamoalar tezroq relizlarni chiqaradi va joylashtirishda kamroq muammolarga duch keladi.
Har bir artefakt bir necha bosqichdan o'tadi: yaratish (yig'ilish, kompilyatsiya), tekshirish (sinov, xavfsizlik tekshiruvi), saqlash (artefakt reestri), tarqatish (yuklab olish uchun nashr) va arxivlash yoki o'chirish (versiya eskirganda).
Turli platformalar va texnologiyalar turli artefakt formatlarini yaratadi. Formatlarni tushunish CI/CD pipeline-ni to'g'ri sozlash va saqlash tizimini tanlash uchun zarur.
APK (Android Package Kit) — an'anaviy o'rnatish paketi formati. AAB (Android App Bundle) — Google Play-da nashr qilish uchun zamonaviy format, faqat ma'lum bir qurilmaga kerakli resurslarni o'z ichiga oladi. AAB o'rnatilgan ilova hajmini universal APK bilan solishtirganda o'rtacha 15-20% ga kamaytiradi.
IPA (iOS App Store Package) — iOS qurilmalari uchun kod va resurslarni o'z ichiga olgan arxiv. XCArchive — Xcode tomonidan yaratilgan oraliq artefakt, undan yakuniy IPA eksport qilinadi. dSYM — crash-log'larni simvolizatsiya qilish uchun zarur bo'lgan disk raskadrovka fayli.
| Platforma | Format | Kengaytma | Maqsad |
|---|---|---|---|
| Android | APK | .apk | O'rnatish paketi |
| Android | AAB | .aab | Google Play-da nashr |
| iOS | IPA | .ipa | O'rnatish paketi |
| iOS | dSYM | .dSYM.zip | Disk raskadrovka belgilari |
| Flutter | Bundle | .zip, .tar.gz | Web/Desktop yig'ilishlari |
JAR (Java ARchive) — Java/Kotlin kutubxonalari uchun. AAR (Android ARchive) — resursli Android kutubxonalari uchun. Docker tasvirlari — mikroxizmatlar uchun konteyner artefaktlari. Har bir turning o'z reestri va versiyalarni boshqarish qoidalari mavjud.
Artefaktlar — pipeline bosqichlari o'rtasidagi bog'lovchi halqadir. Har bir bosqich oldingisining artefaktlarini iste'mol qiladi va yangilarini yaratadi. Ushbu oqimni tushunish samarali CI/CD sozlash uchun juda muhimdir.
Odatiy oqim o'z ichiga oladi: commit → yig'ilish serveri kodni kompilyatsiya qiladi va optimallashtirilmagan artefakt yaratadi → test artefakti testlarni bajarish uchun ishlatiladi → muvaffaqiyatli bo'lsa, reliz artefakti yaratiladi → imzolanadi va artefakt reestrida nashr qilinadi → reestrdan artefakt staging va ishlab chiqarishga joylashtirish uchun olinadi. Har bir bosqich o'tishi yaxlitlik va talablarga muvofiqlikni tekshirish bilan birga keladi.
Pipeline turli bosqichlarda bir nechta artefakt yaratishi mumkin. Disk raskadrovka artefaktlari disk raskadrovka ma'lumotlarini o'z ichiga oladi, optimallashtirilmagan — testlar uchun tez yig'iladi, reliz artefaktlari — optimallashtirish va obfuskatsiya bilan yakuniy versiyalardir. CI tizimi ularni farqlay olishi va har bir tur uchun tegishli saqlash siyosatini qo'llashi kerak.
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
Bog'liqlik keshini va yig'ilish artefaktlarini farqlash muhimdir. Kesh (Gradle cache, CocoaPods cache) takroriy yig'ilishlarni tezlashtiradi, lekin joylashtirish uchun mo'ljallanmagan. Artefaktlar — tarqatishga tayyor yakuniy mahsulot. Kesh uchun TTLni bir necha kun, artefaktlar uchun haftalar yoki oylar qilib belgilang.
Artefaktlar yig'ilish serverida saqlanmasligi kerak — buning uchun ixtisoslashgan tizimlar mavjud. Repository Manager markazlashtirilgan saqlash, indekslash, kirish nazorati va CI/CD vositalari bilan integratsiyani ta'minlaydi.
JFrog Artifactory — Maven, Gradle, Docker, NuGet, npm, APT, YUM qo'llab-quvvatlaydigan universal menejer. Sonatype Nexus — asosiy formatlarni qo'llab-quvvatlaydigan ochiq manbali muqobil. GitHub Packages — GitHub-ga o'rnatilgan reestr, allaqachon GitHub ishlatadigan jamoalar uchun qulay. GitLab Container Registry — Docker tasvirlari uchun.
Asosiy omillar: qo'llab-quvvatlanadigan formatlar, litsenziyalash modeli (open-source/enterprise), mavjud CI/CD bilan integratsiya, mintaqalar o'rtasida replikatsiya imkoniyati, eski versiyalarni avtomatik tozalash siyosatlari va muvofiqlik hisobotlari mavjudligi.
// Jenkins pipeline — APKni Artifactory-ga nashr qilish
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)
Artefaktlarni to'g'ri versiyalash strategiyasi yig'ilishlarning takror ishlab chiqarilishi va o'zgarishlarni kuzatish uchun juda muhimdir. Versiyalashsiz ishlab chiqarishda kodning qaysi versiyasi muammoga sabab bo'lganini aniqlash mumkin emas.
MAJOR.MINOR.PATCH standarti: MAJOR mos kelmaydigan API o'zgarishlarida, MINOR — orqaga mos funksionallik qo'shilganda, PATCH — orqaga mos tuzatishlarda o'zgaradi. CI/CD uchun versiyaga yig'ilish metama'lumotlari qo'shiladi: 2.4.1+build.20260703.1. Bu qaysi commit ma'lum bir artefaktni yaratganini va u qachon tuzilganini aniq aniqlash imkonini beradi.
Har bir artefakt o'zining kelib chiqishi haqida metama'lumotlarni o'z ichiga olishi kerak: commit SHA, CI yig'ilish raqami, filial nomi, yig'ilish sanasi. Ushbu ma'lumot artefakt manifestida yoziladi va istalgan vaqtda uni yaratish kontekstini tiklash imkonini beradi. Traceabilitysiz artefaktlar bilan ishlash versiyalarni taxmin qilishga aylanadi, bu audit talablari bo'lgan ishlab chiqarish tizimlari uchun qabul qilib bo'lmaydi.
Nom konvensiyasi: {project}-{module}-{version}.{ext}. Masalan: `messaging-sdk-2.4.1.aar` yoki `app-release-2.4.1.apk`. Yig'ilish serveri Git tegiga yoki CI tizimining yig'ilish raqamiga asoslanib avtomatik versiya yaratishi mumkin.
Maven/Gradle artefakt reestrlari release versiyalari (qat'iy, o'zgarmas) va snapshot versiyalari (joriy ishlanma, qayta yozilishi mumkin) o'rtasida farqlanadi. CI/CD pipeline-larida snapshot artefaktlari ishlab chiqish uchun qulay, ammo ishlab chiqarishda faqat release versiyalari ishlatilishi kerak.
Artefaktlar dasturiy ta'minot yetkazib berish zanjirining (software supply chain) asosiy elementidir. Artefaktning buzilishi zararli kodning ishlab chiqarish muhitiga kirib kelishiga olib kelishi mumkin. Artefakt xavfsizligi bir necha himoya darajasini o'z ichiga oladi.
APK fayllari jarsigner yoki apksigner bilan imzolanadi; IPA — Apple sertifikati bilan; Docker tasvirlari — Content Trust (Notary) bilan. Imzo yaxlitlikni kafolatlaydi va artefakt muallifini tasdiqlaydi. CI/CD pipeline barcha uchinchi tomon bog'liqliklarining imzolarini tekshirishni o'z ichiga olishi kerak.
Nashrdan oldin artefakt avtomatik skanerlar bilan tekshiriladi: Snyk, Trivy, Sonatype Nexus IQ, GitHub Dependabot. Ular kiritilgan bog'liqliklarni, ishlatilgan kutubxonalarning versiyalarini va ma'lum CVE zaifliklarini tahlil qiladi. Kritik zaiflik aniqlanganda, reliz darhol bloklanadi va dasturchilar tomonidan bartaraf etilguncha to'xtatiladi.
SLSA (Supply chain Levels for Software Artifacts) — SLSA 1 (asosiy) dan SLSA 4 (maksimal) gacha ishonch darajalarini belgilaydigan xavfsizlik ramkasi. Yig'ilish serveri provenance attestation — artefakt qanday va qaysi koddan yig'ilganligi haqida kriptografik imzolangan guvohnoma yaratishi kerak.
Tez-tez beriladigan savollar
APK — barcha resurslarga ega universal paket, AAB — modulli format bo'lib, unda Google Play faqat kerakli resurslarni yetkazib beradi. AAB hajmi kichikroq va Google yangi ilovalar uchun tavsiya qiladi.
Eng yaxshisi ixtisoslashgan tizimlarda (Artifactory, Nexus, GitHub Packages), CI serverda yoki kod omborida emas. Ular versiyalash, kirish nazorati, CI/CD bilan integratsiya va eski versiyalarni avtomatik tozalashni ta'minlaydi.
Ha, ishlab chiqarishda foydalanish uchun mo'ljallangan barcha artefaktlar imzolanishi kerak. Mobil ilovalar uchun imzo qurilmalarda o'rnatish va do'konlarda nashr qilish uchun majburiydir.
Git tegidan yoki CI tizimining yig'ilish raqamidan foydalaning. MAJOR.MINOR.PATCH+build.N namunasi bo'yicha avtomatik versiya yarating, bu yerda N CI yig'ilishining ketma-ket raqami yoki commit SHA.
Avtomatik tozalash siyosatini sozlang: oxirgi 10-20 reliz va 30-50 snapshot versiyasini saqlang. Eski versiyalarni muvofiqlik uchun sovuq omborda (S3 Glacier, Google Coldline) arxivlash mumkin.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.