Ilova ishlab chiqishda Artifact: bu nima, turlari va qanday boshqarish

Muallif: IT Sectr Nashr etilgan: 2026-04-12 O'qish vaqti: 8 daq

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 — joylashtirish yoki tarqatish uchun bajariladigan kod, resurslar va metama'lumotlarni o'z ichiga olgan yig'ilishning chiqish fayli.
  • Artefakt turlari — Android uchun APK/AAB, iOS uchun IPA, Java xizmatlari uchun JAR/WAR, Docker tasvirlari, NuGet paketlari.
  • Versiyalash artefaktlarning istalgan vaqtda ishlab chiqarish muhitida kodning qaysi versiyasi ishlayotganini aniq aniqlash imkonini beradi.
  • Artefakt omborlari (Artifactory, Nexus, Docker Hub) markazlashtirilgan boshqaruv, versiya nazorati va kirishni cheklashni ta'minlaydi.
  • Xavfsizlik artefaktlarning imzolanishi, zaifliklarni skanerlash va yaxlitlikni tekshirishni (checksum) o'z ichiga oladi.

Ishlab chiqishda Artifact nima

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.

Artefaktning hayot aylanishi

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).

Mobil ishlab chiqishda artefakt turlari

Turli platformalar va texnologiyalar turli artefakt formatlarini yaratadi. Formatlarni tushunish CI/CD pipeline-ni to'g'ri sozlash va saqlash tizimini tanlash uchun zarur.

Android artefaktlari

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.

iOS artefaktlari

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.

PlatformaFormatKengaytmaMaqsad
AndroidAPK.apkO'rnatish paketi
AndroidAAB.aabGoogle Play-da nashr
iOSIPA.ipaO'rnatish paketi
iOSdSYM.dSYM.zipDisk raskadrovka belgilari
FlutterBundle.zip, .tar.gzWeb/Desktop yig'ilishlari

Server va kutubxona loyihalarining artefaktlari

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.

CI/CD pipeline-da artefaktlar

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.

Pipeline-da artefakt oqimi

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.

Oraliq va yakuniy artefaktlar

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.

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

Cache vs Artifact

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.

Artefakt omborlari

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.

Mashhur artefakt reestrlari

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.

Reestr tanlash mezonlari

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.

groovy
// 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)

Versiyalash va nomlash

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.

Semantic Versioning (SemVer)

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.

Git bilan bog'liqlik (Traceability)

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.

Artefaktlarni nomlash

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.

  • Git tegidan versiya manbai sifatida foydalaning — bu artefaktni kodning ma'lum holati bilan bog'laydi
  • Commit SHA qo'shing metama'lumotlarga disk raskadrovka bosqichida aniq identifikatsiya uchun
  • Saqlash siyosatini sozlang — oxirgi N versiyani saqlang, qolganini arxivlang

Snapshot vs Release

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 xavfsizligi

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.

Artefaktlarni imzolash

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.

Zaifliklarni skanerlash

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.

Supply chain levels

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 AAB dan qanday farq qiladi?

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.

Yig'ilish artefaktlarini qayerda saqlash yaxshiroq?

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.

Har bir artefakt imzolanishi kerakmi?

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.

CI/CD da artefaktlarni qanday versiyalash kerak?

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.

Eski artefaktlarni qanchalik tez-tez tozalash kerak?

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

  • Artifact — yig'ilishning yakuniy mahsuloti: APK, IPA, AAR, Docker tasviri yoki JAR kutubxonasi, joylashtirishga yoki foydalanishga tayyor.
  • Artefakt formatlari platformaga qarab farqlanadi: Android APK/AAB, iOS IPA, server qismi JAR/Docker ishlatadi.
  • Artefakt omborlari (Artifactory, Nexus) boshqaruvni markazlashtiradi, versiya va kirish nazoratini ta'minlaydi.
  • SemVer bo'yicha versiyalash va Git tegi bilan bog'lanish yig'ilishlarning takror ishlab chiqarilishini kafolatlaydi va disk raskadrovkani osonlashtiradi.
  • Xavfsizlik imzolash, zaifliklarni skanerlash va yetkazib berish zanjirini himoya qilish uchun SLSA ramkasini o'z ichiga oladi.
  • Saqlash siyosati kritik artefakt versiyalarini yo'qotmasdan disk xotirasining to'lib ketishining oldini oladi.
  • Snapshot vs Release — ajratish ishlab chiqish versiyalarini barqaror relizlardan ajratishga yordam beradi, ishlab chiqarishga faqat tekshirilgan va tasdiqlangan yig'ilishlar tushishini kafolatlaydi.

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.

Loyihani muhokama qilish

Shuningdek o'qing