Tətbiq inkişafında Artifact: bu nədir, növləri və necə idarə etməli

Müəllif: IT Sectr Dərc olunub: 2026-04-12 Oxuma vaxtı: 8 dəq

Artifact (artefakt) — kompilyasiya prosesinin son nəticəsidir, hədəf cihazda yerləşdirilə bilər və ya digər layihələrdə asılılıq kimi istifadə oluna bilər. Artefaktlara mobil tətbiqlərin APK və IPA faylları, Docker görüntüləri, JAR/WAR kitabxanaları və quraşdırma paketləri daxildir. JFrog State of Software Supply Chain, 2025 məlumatına görə, təşkilatlar bir reyestrdə 10 terabayta qədər artefakt saxlaya bilər ki, bu da idarəetmə sistemlərini kritik əhəmiyyətli edir.

Əsas məqamlar

  • Artifact — yerləşdirmə və ya yayım üçün icra olunan kod, resurslar və metadata ehtiva edən kompilyasiya çıxış faylıdır.
  • Artefakt növləri — Android üçün APK/AAB, iOS üçün IPA, Java xidmətləri üçün JAR/WAR, Docker görüntüləri, NuGet paketləri.
  • Versiyalama artefaktların istənilən vaxt istehsal mühitində hansı kod versiyasının işlədiyini dəqiq müəyyən etməyə imkan verir.
  • Artefakt anbarları (Artifactory, Nexus, Docker Hub) mərkəzləşdirilmiş idarəetmə, versiya nəzarəti və girişin məhdudlaşdırılmasını təmin edir.
  • Təhlükəsizlik artefaktların imzalanması, zəifliklərin skan edilməsi və bütövlük yoxlanılmasını (checksum) əhatə edir.

Tətbiq inkişafında Artifact nədir

Artifact (kompilyasiya artefaktı) — mənbə kodunun kompilyasiyasının nəticəsidir, yerləşdirməyə və ya asılılıq kimi istifadəyə hazırdır. Kompilyasiya prosesi mənbə fayllarını (Java, Kotlin, Swift, C++ və digərləri) hədəf cihazda və ya serverdə işə salına bilən ikili paketlərə çevirir.

Artefakt anlayışı icra olunan fayllardan kənara çıxır. Məsələn, JAR kitabxanası — digər layihələrdə asılılıq kimi istifadə olunan artefaktdır. Docker görüntüsü — tətbiqi və onun mühitini ehtiva edən artefaktdır. Hətta test əhatəsi hesabatı CI/CD kontekstində artefakt sayıla bilər.

Böyük şirkətlərdə müasir inkişaf yüz minlərlə artefaktın idarə edilməsini əhatə edir. Google DORA artefaktların idarə edilməsinin yetkinliyini DevOps-un ümumi səmərəliliyi ilə əlaqələndirir — artefakt reyestrlərindən istifadə edən komandalar daha sürətli buraxılış edir və yerləşdirmə zamanı daha az problemlə qarşılaşır.

Artefaktın həyat dövrü

Hər bir artefakt bir neçə mərhələdən keçir: yaradılma (kompilyasiya), validasiya (test, təhlükəsizlik yoxlanışı), saxlanma (artefakt reyestri), yayım (yükləmə üçün nəşr) və arxivləşdirmə və ya silmə (versiya köhnəldikdə).

Mobil inkişafda artefakt növləri

Müxtəlif platformalar və texnologiyalar fərqli artefakt formatları yaradır. Formatları başa düşmək CI/CD pipeline-ının düzgün konfiqurasiyası və saxlama sisteminin seçimi üçün zəruridir.

Android artefaktları

APK (Android Package Kit) — ənənəvi quraşdırma paketi formatı. AAB (Android App Bundle) — Google Play-də nəşr üçün müasir format, yalnız müəyyən cihaza lazım olan resursları ehtiva edir. AAB quraşdırılan tətbiqin ölçüsünü universal APK ilə müqayisədə orta hesabla 15-20% azaldır.

iOS artefaktları

IPA (iOS App Store Package) — iOS cihazları üçün kod və resursları olan arxiv. XCArchive — Xcode tərəfindən yaradılan aralıq artefakt, ondan final IPA ixrac edilir. dSYM — crash-loqların simvolizasiyası üçün zəruri olan debug faylı.

PlatformaFormatGenişlənməTəyinat
AndroidAPK.apkQuraşdırma paketi
AndroidAAB.aabGoogle Play-də nəşr
iOSIPA.ipaQuraşdırma paketi
iOSdSYM.dSYM.zipDebug simvolları
FlutterBundle.zip, .tar.gzWeb/Desktop kompilyasiyaları

Server və kitabxana layihələrinin artefaktları

JAR (Java ARchive) — Java/Kotlin kitabxanaları üçün. AAR (Android ARchive) — resursları olan Android kitabxanaları üçün. Docker görüntüləri — mikroxidmətlər üçün konteyner artefaktları. Hər növün öz reyestri və versiya idarəetmə qaydaları var.

CI/CD pipeline-da artefaktlar

Artefaktlar — pipeline mərhələləri arasında birləşdirici halqadır. Hər mərhələ əvvəlkinin artefaktlarını istehlak edir və yenilərini yaradır. Bu axını başa düşmək səmərəli CI/CD-nin konfiqurasiyası üçün kritik əhəmiyyətlidir.

Pipeline-da artefakt axını

Tipik axın daxildir: commit → kompilyasiya serveri kodu kompilyasiya edir və optimallaşdırılmamış artefakt yaradır → test artefaktı testlərin icrası üçün istifadə olunur → uğur olduqda buraxılış artefaktı yaradılır → imzalanır və artefakt reyestrində nəşr olunur → reyestrdən artefakt staging və istehsal mühitinə yerləşdirmə üçün götürülür. Hər mərhələ keçidi bütövlük və tələblərə uyğunluq yoxlanışı ilə müşayiət olunur.

Aralıq və son artefaktlar

Pipeline müxtəlif mərhələlərdə bir neçə artefakt yarada bilər. Debug artefaktları debug məlumatı ehtiva edir, optimallaşdırılmamış — testlər üçün tez yığılır, buraxılış artefaktları — optimallaşdırma və obfuskasiya ilə son versiyalardır. CI sistemi onları ayırd edə bilməli və hər növ üçün uyğun saxlama siyasəti tətbiq etməlidir.

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

Asılılıq keşi və kompilyasiya artefaktlarını fərqləndirmək vacibdir. Keş (Gradle cache, CocoaPods cache) təkrar kompilyasiyaları sürətləndirir, lakin yerləşdirmə üçün nəzərdə tutulmayıb. Artefaktlar — yayıma hazır son məhsuldur. Keş üçün TTL-i bir neçə gün, artefaktlar üçün həftələr və ya aylar təyin edin.

Artefakt anbarları

Artefaktlar kompilyasiya serverində saxlanılmamalıdır — bunun üçün ixtisaslaşmış sistemlər mövcuddur. Repository Manager mərkəzləşdirilmiş saxlama, indeksasiya, giriş nəzarəti və CI/CD alətləri ilə inteqrasiyanı təmin edir.

Məşhur artefakt reyestrləri

JFrog Artifactory — Maven, Gradle, Docker, NuGet, npm, APT, YUM dəstəkləyən universal menecerdir. Sonatype Nexus — əsas formatları dəstəkləyən open-source alternativ. GitHub Packages — GitHub-da quraşdırılmış reyestr, artıq GitHub istifadə edən komandalar üçün əlverişlidir. GitLab Container Registry — Docker görüntüləri üçün.

Reyestr seçimi meyarları

Əsas amillər: dəstəklənən formatlar, lisenziyalaşdırma modeli (open-source/enterprise), mövcud CI/CD ilə inteqrasiya, regionlar arasında replikasiya imkanı, köhnə versiyaların avtomatik təmizlənməsi siyasətləri və compliance hesabatları.

groovy
// Jenkins pipeline — APK-nın Artifactory-də nəşri
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)

Versiyalama və adlandırma

Artefaktların düzgün versiyalama strategiyası kompilyasiyaların təkrar istehsal oluna bilməsi və dəyişikliklərin izlənməsi üçün kritikdir. Versiyalama olmadan istehsal mühitində hansı kod versiyasının probleminə səbəb olduğunu müəyyən etmək mümkün deyil.

Semantic Versioning (SemVer)

MAJOR.MINOR.PATCH standartı: MAJOR uyğun olmayan API dəyişikliklərində, MINOR — geriyə uyğun funksionallıq əlavə edildikdə, PATCH — geriyə uyğun düzəlişlərdə dəyişir. CI/CD üçün versiyaya kompilyasiya metadataları əlavə edilir: 2.4.1+build.20260703.1. Bu, hansı commit-in konkret artefaktı yaratdığını və onun nə vaxt yaradıldığını dəqiq müəyyən etməyə imkan verir.

Git ilə əlaqə (Traceability)

Hər bir artefakt öz mənşəyi haqqında metadata ehtiva etməlidir: commit SHA, CI kompilyasiya nömrəsi, budaq adı, kompilyasiya tarixi. Bu məlumat artefaktın manifestində yazılır və istənilən vaxt onun yaradılma kontekstini bərpa etməyə imkan verir. Traceability olmadan artefaktlarla iş versiyaları təxmin etməyə çevrilir ki, bu da audit tələbləri olan istehsal sistemləri üçün yolverilməzdir.

Artefaktların adlandırılması

Ad konvensiyası: {project}-{module}-{version}.{ext}. Məsələn: `messaging-sdk-2.4.1.aar` və ya `app-release-2.4.1.apk`. Kompilyasiya serveri Git teqinə və ya CI sisteminin kompilyasiya nömrəsinə əsasən avtomatik versiya yarada bilər.

  • Git teqindən versiya mənbəyi kimi istifadə edin — bu, artefaktı konkret kod vəziyyəti ilə əlaqələndirir
  • Commit SHA əlavə edin metadatalara debug mərhələsində dəqiq identifikasiya üçün
  • Retention siyasəti təyin edin — son N versiyanı saxlayın, qalanını arxivləşdirin

Snapshot vs Release

Maven/Gradle artefakt reyestrlərində release versiyaları (sabit, dəyişməz) və snapshot versiyaları (cari inkişaf, üzərinə yazıla bilər) fərqləndirilir. CI/CD pipeline-larında snapshot artefaktları inkişaf üçün əlverişlidir, lakin istehsal mühitində yalnız release versiyaları istifadə edilməlidir.

Artefaktların təhlükəsizliyi

Artefaktlar proqram təchizatı təchizat zəncirinin (software supply chain) əsas elementidir. Artefaktın kompromatasiyası zərərli kodun istehsal mühitinə daxil olmasına səbəb ola bilər. Artefakt təhlükəsizliyi bir neçə qoruma səviyyəsini əhatə edir.

Artefaktların imzalanması

APK faylları jarsigner və ya apksigner ilə imzalanır; IPA — Apple sertifikatı ilə; Docker görüntüləri — Content Trust (Notary) ilə. İmza bütövlüyü təmin edir və artefaktın müəllifini təsdiqləyir. CI/CD pipeline bütün üçüncü tərəf asılılıqlarının imzalarının yoxlanılmasını əhatə etməlidir.

Zəifliklərin skan edilməsi

Nəşrdən əvvəl artefakt avtomatik skanerlərlə yoxlanılır: Snyk, Trivy, Sonatype Nexus IQ, GitHub Dependabot. Onlar daxil edilmiş asılılıqları, istifadə olunan kitabxanaların versiyalarını və məlum CVE zəifliklərini analiz edir. Kritik zəiflik aşkar edildikdə, buraxılış dərhal bloklanır və proqramçılar tərəfindən aradan qaldırılana qədər dayandırılır.

Supply chain levels

SLSA (Supply chain Levels for Software Artifacts) — SLSA 1 (əsas) ilə SLSA 4 (maksimum) arasında etibar səviyyələrini müəyyən edən təhlükəsizlik çərçivəsidir. Kompilyasiya serveri provenance attestation — artefaktın necə və hansı koddan yığıldığına dair kriptoqrafik imzalanmış şəhadətnamə yaratmalıdır.

Tez-tez verilən suallar

APK AAB-dən nə ilə fərqlənir?

APK — bütün resursları olan universal paket, AAB — modul formatdır, burada Google Play yalnız lazımi resursları çatdırır. AAB ölçüdə daha kiçikdir və Google tərəfindən yeni tətbiqlər üçün tövsiyə olunur.

Kompilyasiya artefaktlarını harada saxlamaq daha yaxşıdır?

Ən yaxşısı ixtisaslaşmış sistemlərdə (Artifactory, Nexus, GitHub Packages), CI serverdə və ya kod repozitorisində deyil. Onlar versiyalama, giriş nəzarəti, CI/CD ilə inteqrasiya və köhnə versiyaların avtomatik təmizlənməsini təmin edir.

Hər bir artefakt imzalanmalıdır?

Bəli, istehsal istifadəsi üçün nəzərdə tutulmuş bütün artefaktlar imzalanmalıdır. Mobil tətbiqlər üçün imza cihazlarda quraşdırma və mağazalarda nəşr üçün məcburidir.

CI/CD-də artefaktları necə versiyalamaq olar?

Git teqindən və ya CI sisteminin kompilyasiya nömrəsindən istifadə edin. MAJOR.MINOR.PATCH+build.N şablonu üzrə avtomatik versiya yaradın, burada N CI kompilyasiyasının ardıcıl nömrəsi və ya commit SHA-dır.

Köhnə artefaktları nə qədər tez-tez təmizləmək lazımdır?

Avtomatik təmizləmə siyasəti təyin edin: son 10-20 buraxılış və 30-50 snapshot versiyasını saxlayın. Köhnə versiyaları compliance üçün soyuq anbarda (S3 Glacier, Google Coldline) arxivləşdirmək olar.

Nəticə

  • Artifact — kompilyasiyanın son məhsuludur: APK, IPA, AAR, Docker görüntüsü və ya JAR kitabxanası, yerləşdirməyə və ya istifadəyə hazırdır.
  • Artefakt formatları platformadan asılı olaraq fərqlənir: Android APK/AAB, iOS IPA, server hissəsi JAR/Docker istifadə edir.
  • Artefakt anbarları (Artifactory, Nexus) idarəetməni mərkəzləşdirir, versiya və giriş nəzarətini təmin edir.
  • SemVer üzrə versiyalama və Git teqi ilə əlaqə kompilyasiyaların təkrar istehsalını təmin edir və debugu asanlaşdırır.
  • Təhlükəsizlik imzalama, zəiflik skanı və təchizat zəncirinin qorunması üçün SLSA çərçivəsini əhatə edir.
  • Retention siyasəti kritik artefakt versiyalarını itirmədən disk yaddaşının daşmasının qarşısını alır.
  • Snapshot vs Release — bölgü inkişaf versiyalarını sabit buraxılışlardan ayırmağa kömək edir, istehsal mühitinə yalnız yoxlanılmış və təsdiqlənmiş kompilyasiyaların daxil olmasını təmin edir.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun