Uygulama geliştirmede Artifact: nedir, türleri ve nasıl yönetilir

Yazar: IT Sectr Yayınlanma: 2026-04-12 Okuma süresi: 8 dk

Yapıt (Artifact), bir derleme sürecinin nihai sonucudur ve hedef cihaza dağıtılabilir veya diğer projelerde bağımlılık olarak kullanılabilir. Yapıtlar, mobil uygulamaların APK ve IPA dosyalarını, Docker görüntülerini, JAR/WAR kitaplıklarını ve kurulum paketlerini içerir. JFrog State of Software Supply Chain, 2025'e göre kuruluşlar, tek bir kayıt defterinde 10 terabayta kadar yapıt depolayabilir, bu da yapıt yönetim sistemlerini kritik derecede önemli hale getirir.

Önemli Noktalar

  • Artifact, dağıtım veya yayın için yürütülebilir kod, kaynak ve meta veri içeren bir derleme çıktı dosyasıdır.
  • Yapıt türleri — Android için APK/AAB, iOS için IPA, Java hizmetleri için JAR/WAR, Docker görüntüleri, NuGet paketleri.
  • Sürümleme, herhangi bir zamanda üretimde hangi kod sürümünün çalıştığını tam olarak belirlemenizi sağlar.
  • Yapıt depoları (Artifactory, Nexus, Docker Hub) merkezi yönetim, sürüm kontrolü ve erişim kontrolü sağlar.
  • Güvenlik, imzalama, güvenlik açığı taraması ve bütünlük kontrolünü (sağlama toplamı) içerir.

Geliştirmede Artifact Nedir

Yapıt (derleme yapıtı), kaynak kodun derlenmesinin sonucudur ve dağıtıma veya bağımlılık olarak kullanıma hazırdır. Derleme süreci, kaynak dosyaları (Java, Kotlin, Swift, C++ ve diğerleri) hedef cihazda veya sunucuda çalıştırılabilen ikili paketlere dönüştürür.

Yapıt kavramı yürütülebilir dosyaların ötesine geçer. Örneğin, bir JAR kitaplığı diğer projelerde bağımlılık olarak kullanılan bir yapıttır. Bir Docker görüntüsü, uygulamayı ve ortamını içeren bir yapıttır. Bir test kapsama raporu bile CI/CD bağlamında bir yapıt olarak kabul edilebilir.

Büyük şirketlerde modern geliştirme, yüz binlerce yapıtın yönetimini içerir. Google DORA, yapıt yönetimi olgunluğunu genel DevOps etkinliğiyle ilişkilendirir — yapıt kayıt defterlerini kullanan ekipler daha hızlı sürüm yayınlar ve daha az dağıtım sorunuyla karşılaşır.

Yapıt Yaşam Döngüsü

Her yapıt birkaç aşamadan geçer: oluşturma (derleme), doğrulama (testler, güvenlik kontrolleri), depolama (yapıt kayıt defteri), dağıtma (indirme için yayınlama) ve arşivleme veya silme (sürüm eskidiğinde).

Mobil Geliştirmede Yapıt Türleri

Farklı platformlar ve teknolojiler farklı yapıt biçimleri üretir. Biçimleri anlamak, CI/CD boru hattını doğru yapılandırmak ve bir depolama sistemi seçmek için önemlidir.

Android Yapıtları

APK (Android Package Kit) geleneksel kurulum paketi biçimidir. AAB (Android App Bundle), Google Play'de yayınlamak için modern bir biçimdir ve yalnızca belirli bir cihazın ihtiyaç duyduğu kaynakları içerir. AAB, evrensel bir APK'ya kıyasla kurulu uygulama boyutunu ortalama %15-20 oranında azaltır.

iOS Yapıtları

IPA (iOS App Store Package), iOS cihazları için kod ve kaynak içeren bir arşivdir. XCArchive, Xcode tarafından oluşturulan bir ara yapıttır ve nihai IPA buradan dışa aktarılır. dSYM, çökme günlüklerinin simgeleştirilmesi için gereken bir hata ayıklama sembol dosyasıdır.

PlatformBiçimUzantıAmaç
AndroidAPK.apkKurulum paketi
AndroidAAB.aabGoogle Play yayını
iOSIPA.ipaKurulum paketi
iOSdSYM.dSYM.zipHata ayıklama sembolleri
FlutterBundle.zip, .tar.gzWeb/Masaüstü derlemeleri

Sunucu ve Kitaplık Proje Yapıtları

JAR (Java ARchive) — Java/Kotlin kitaplıkları için. AAR (Android ARchive) — kaynak içeren Android kitaplıkları için. Docker görüntüleri — mikro hizmetler için konteyner yapıtları. Her türün kendi kayıt defteri ve sürüm yönetimi kuralları vardır.

CI/CD Boru Hattında Yapıtlar

Yapıtlar, boru hattı aşamaları arasındaki bağlantıdır. Her aşama bir önceki aşamadan yapıtları tüketir ve yenilerini üretir. Bu akışı anlamak, etkili bir CI/CD boru hattı kurmak için kritiktir.

Boru Hattında Yapıt Akışı

Tipik bir akış şunları içerir: commit -> derleme sunucusu kodu derler ve optimize edilmemiş bir yapıt oluşturur -> test yapıtı testleri çalıştırmak için kullanılır -> başarılı olursa, bir sürüm yapıtı oluşturulur -> imzalanır ve yapıt kayıt defterinde yayınlanır -> yapıt, hazırlama ve üretime dağıtılmak üzere kayıt defterinden alınır. Aşamalar arasındaki her geçişe bir bütünlük kontrolü ve gereksinim uygunluk doğrulaması eşlik eder.

Ara ve Nihai Yapıtlar

Boru hattı, farklı aşamalarda birden çok yapıt oluşturabilir. Hata ayıklama yapıtları hata ayıklama bilgileri içerir, optimize edilmemiş olanlar test için hızlıca derlenir, sürüm yapıtları optimizasyon ve gizleme ile nihaidir. CI sistemi bunları ayırt edebilmeli ve her tür için uygun saklama politikaları uygulayabilmelidir.

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

Önbellek vs Yapıt

Bağımlılık önbelleği ile derleme yapıtlarını ayırt etmek önemlidir. Önbellek (Gradle önbelleği, CocoaPods önbelleği) tekrarlanan derlemeleri hızlandırır ancak dağıtım için tasarlanmamıştır. Yapıtlar dağıtıma hazır nihai üründür. Önbellek için birkaç günlük, yapıtlar için haftalar veya aylar TTL ayarlayın.

Yapıt Depoları

Yapıtlar derleme sunucusunda saklanmamalıdır — bunun için özelleşmiş sistemler vardır. Bir Depo Yöneticisi, merkezi depolama, dizin oluşturma, erişim kontrolü ve CI/CD araçlarıyla entegrasyon sağlar.

Popüler Yapıt Kayıt Defterleri

JFrog Artifactory — Maven, Gradle, Docker, NuGet, npm, APT, YUM'u destekleyen evrensel bir yönetici. Sonatype Nexus — ana biçimleri destekleyen açık kaynak bir alternatif. GitHub Packages — GitHub'da yerleşik kayıt defteri, zaten GitHub kullanan ekipler için uygun. GitLab Container Registry — Docker görüntüleri için.

Kayıt Defteri Seçim Kriterleri

Temel faktörler: desteklenen biçimler, lisanslama modeli (açık kaynak/kurumsal), mevcut CI/CD ile entegrasyon, bölgeler arası çoğaltma yetenekleri, eski sürümler için otomatik temizleme politikalarının mevcudiyeti ve uyumluluk raporları.

groovy
// Jenkins pipeline — Artifactory'de APK yayınlama
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)

Sürümleme ve Adlandırma

Uygun bir yapıt sürümleme stratejisi, derleme tekrarlanabilirliği ve değişiklik takibi için çok önemlidir. Sürümleme olmadan, üretimde bir soruna hangi kod sürümünün neden olduğunu belirlemek imkansızdır.

Anlamsal Sürümleme (SemVer)

MAJOR.MINOR.PATCH standardı: MAJOR uyumsuz API değişiklikleriyle, MINOR geriye dönük uyumlu işlev eklemeleriyle, PATCH geriye dönük uyumlu hata düzeltmeleriyle değişir. CI/CD için sürüme derleme meta verileri eklenir: 2.4.1+build.20260703.1. Bu, belirli bir yapıtı hangi commit'in ürettiğini ve ne zaman oluşturulduğunu tam olarak belirlemenizi sağlar.

İzlenebilirlik — Git Bağlantısı

Her yapıt, kökeni hakkında meta veriler içermelidir: commit SHA'sı, CI derleme numarası, dal adı, derleme tarihi. Bu bilgiler yapıt bildirimine kaydedilir ve herhangi bir zamanda oluşturma bağlamının yeniden yapılandırılmasına olanak tanır. İzlenebilirlik olmadan, yapıtlarla çalışmak sürüm tahminine dönüşür ve bu, denetim gereksinimleri olan üretim sistemleri için kabul edilemez.

Yapıt Adlandırma

Adlandırma kuralı: {project}-{module}-{version}.{ext}. Örneğin: messaging-sdk-2.4.1.aar veya app-release-2.4.1.apk. Derleme sunucusu, bir Git etiketine veya CI sistemi derleme numarasına göre otomatik olarak bir sürüm oluşturabilir.

  • Git etiketini sürüm kaynağı olarak kullanın — bu, yapıtı belirli bir kod durumuna bağlar
  • Commit SHA'sını meta verilere ekleyin — hata ayıklama sırasında hassas tanımlama için
  • Saklama politikası yapılandırın — son N sürümü saklayın, kalanı arşivleyin

Anlık Görüntü vs Sürüm

Maven/Gradle yapıt kayıt defterlerinde, sürüm sürümleri (sabit, değiştirilemez) ve anlık görüntü sürümleri (mevcut geliştirme, üzerine yazılabilir) ayırt edilir. CI/CD boru hatlarında, anlık görüntü yapıtları geliştirme için uygundur, ancak üretimde yalnızca sürüm sürümleri kullanılmalıdır.

Yapıt Güvenliği

Yapıtlar, yazılım tedarik zincirinin önemli bir unsurudur. Bir yapıtın tehlikeye girmesi, kötü amaçlı kodun üretime girmesine neden olabilir. Yapıt güvenliği birkaç koruma düzeyi içerir.

Yapıt İmzalama

APK dosyaları jarsigner veya apksigner ile imzalanır; IPA dosyaları bir Apple sertifikasıyla imzalanır; Docker görüntüleri Docker'ın Content Trust (Notary) ile imzalanır. İmzalama bütünlüğü garanti eder ve yapıt yazarını doğrular. CI/CD boru hattı, tüm üçüncü taraf bağımlılıkların imza doğrulamasını içermelidir.

Güvenlik Açığı Taraması

Yayınlamadan önce, yapıt otomatik tarayıcılar tarafından kontrol edilir: Snyk, Trivy, Sonatype Nexus IQ, GitHub Dependabot. Dahil edilen bağımlılıkları, kullanılan kitaplıkların sürümlerini ve bilinen CVE güvenlik açıklarını analiz ederler. Kritik bir güvenlik açığı tespit edilirse, geliştiriciler tarafından düzeltilene kadar sürüm derhal engellenir.

Tedarik Zinciri Düzeyleri

SLSA (Supply chain Levels for Software Artifacts), SLSA 1 (temel) ile SLSA 4 (maksimum) arasında güven düzeyleri tanımlayan bir güvenlik çerçevesidir. Derleme sunucusu, yapıtın nasıl ve hangi koddan oluşturulduğuna dair kriptografik olarak imzalanmış bir beyan (köken kanıtı) üretmelidir.

Sıkça Sorulan Sorular

APK ve AAB arasındaki fark nedir?

APK tüm kaynakları içeren evrensel bir pakettir, AAB ise Google Play'in belirli bir cihaz için yalnızca gerekli kaynakları sağladığı modüler bir biçimdir. AAB daha küçüktür ve Google tarafından yeni uygulamalar için önerilir.

Derleme yapıtlarını saklamak için en iyi yer neresidir?

Tercihen özelleşmiş sistemlerde (Artifactory, Nexus, GitHub Packages), CI sunucusu veya kod deposunda değil. Sürümleme, erişim kontrolü, CI/CD entegrasyonu ve eski sürümlerin otomatik temizliğini sağlarlar.

Her yapıtı imzalamak gerekli mi?

Evet, üretim kullanımı için tasarlanan tüm yapıtlar imzalanmalıdır. Mobil uygulamalar için, cihazlara kurulum ve mağazalarda yayınlama için imzalama zorunludur.

CI/CD'de yapıtlar nasıl sürülenir?

Bir Git etiketi veya CI sistemi derleme numarası kullanın. MAJOR.MINOR.PATCH+build.N şablonunu kullanarak sürümü otomatik olarak oluşturun (N sıralı CI derleme numarası veya commit SHA'sıdır).

Eski yapıtlar ne sıklıkla temizlenmelidir?

Bir otomatik temizleme politikası yapılandırın: son 10-20 sürüm sürümünü ve 30-50 anlık görüntü sürümünü saklayın. Eski sürümler, uyumluluk için soğuk depolamada (S3 Glacier, Google Coldline) arşivlenebilir.

Özet

  • Artifact nihai derleme ürünüdür: APK, IPA, AAR, Docker görüntüsü veya JAR kitaplığı, dağıtıma veya kullanıma hazır.
  • Yapıt biçimleri platforma göre değişir: Android APK/AAB kullanır, iOS IPA kullanır, sunucu tarafı JAR/Docker kullanır.
  • Yapıt depoları (Artifactory, Nexus) yönetimi merkezileştirir, sürüm kontrolü ve erişim kontrolü sağlar.
  • SemVer ile sürümleme ve Git etiketlerine bağlama, derleme tekrarlanabilirliğini sağlar ve hata ayıklamayı basitleştirir.
  • Güvenlik, imzalama, güvenlik açığı taraması ve tedarik zinciri koruması için SLSA çerçevesini içerir.
  • Saklama politikası, kritik yapıt sürümlerini kaybetmeden disk depolama taşmasını önler.
  • Anlık Görüntü vs Sürüm — bunları ayırmak, geliştirme sürümlerini kararlı sürümlerden ayırmaya yardımcı olur ve yalnızca doğrulanmış ve sabitlenmiş derlemelerin üretime ulaşmasını sağlar.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun