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 (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.
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ə).
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.
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.
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ı.
| Platforma | Format | Genişlənmə | Təyinat |
|---|---|---|---|
| Android | APK | .apk | Quraşdırma paketi |
| Android | AAB | .aab | Google Play-də nəşr |
| iOS | IPA | .ipa | Quraşdırma paketi |
| iOS | dSYM | .dSYM.zip | Debug simvolları |
| Flutter | Bundle | .zip, .tar.gz | Web/Desktop kompilyasiyaları |
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.
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.
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.
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.
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
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.
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.
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.
Ə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ı.
// 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)
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.
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.
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.
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.
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 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.
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.
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.
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 — 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.
Ə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.
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.
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.
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ə
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.
Həm də oxuyun