Continuous Delivery (CD): co to je a čím se liší od Continuous Deployment

Autor: IT Sectr Publikováno: 2026-04-11 Doba čtení: 9 min

Continuous Delivery (CD) — to je vývojová praxe, při které se software vždy nachází ve stavu připraveném k vydání do produkce. Každá změna projde všemi fázemi automatizovaného testování a kontrol, načež může být nasazena jedním stisknutím tlačítka nebo automaticky. Podle Google Cloud DORA Report, 2025 týmy praktikující CD vydávají verze 208krát častěji a 106krát rychleji než týmy s nízkou automatizací.

To hlavní

  • Continuous Delivery (CD) — praxe, při které je kód vždy připraven k vydání po automatických kontrolách
  • CD zahrnuje CI a přidává fáze přípravy verze, podepisování a doručování do obchodů s aplikacemi
  • Ruční potvrzení odlišuje Continuous Delivery od Continuous Deployment (automatický deploy)
  • Fastlane — standardní nástroj pro CD v mobilním vývoji, který abstrahuje podepisování a publikování
  • Release pipeline zahrnuje kontrolu metadat, snímků obrazovky, popisu a marketingových materiálů

Co je Continuous Delivery

Continuous Delivery (CD) — to je rozšíření Continuous Integration, které přidává automatizaci všech fází přípravy verze: sestavení release buildu, podepsání certifikáty, obfuskaci, kontrolu metadat obchodu s aplikacemi a nasazení na staging. Termín zavedli Jez Humble a David Farley v knize „Continuous Delivery“ (2010), kde formalizovali praxi umožňující týmům učinit verze předvídatelnými a nízce rizikovými.

Evoluce doručování softwaru

Před zavedením CD byly verze událostí: tým se sešel v místnosti, prošel kontrolní seznam o 20 bodech, ručně spouštěl skripty a doufal, že se nic nerozbije. Continuous Delivery přeměňuje verzi z události na proces: malá změna kódu může být uživatelům doručena za minuty, ne za týdny. Amazon, Netflix a Etsy zavedly CD jako první v 2010. letech — dnes je to standard pro produktové týmy.

Obchodní hodnota CD

Rychlé doručování funkcí je konkurenční výhodou. Pokud konkurent spouští novou funkcionalitu za dny a vy za měsíce, trh si vybere konkurenta. DORA metriky ukazují: elite týmy (s CD) mají dobu vydání méně než 1 hodinu, low týmy (bez CD) — od 1 týdne do 1 měsíce. CD také radikálně snižuje riziko: malé změny se rozbíjejí obtížněji než velká verze jednou za čtvrtletí.

CD vs CI vs Continuous Deployment

Termíny CI, CD a Continuous Deployment se často zaměňují, ale mezi nimi je jasná hranice. Pochopení rozdílů pomáhá správně navrhnout pipeline a zvolit úroveň automatizace odpovídající vyspělosti týmu a obchodním požadavkům.

Continuous Integration

CI je základ, na kterém se CD staví. CI zaručuje, že každý commit projde sestavením a testy. Bez CI je CD nemožné: pokud kód není ověřen, nelze jej vydat. CI kontroluje správnost, CD kontroluje připravenost k obchodnímu použití.

Continuous Delivery

CD přidává k CI fáze přípravy release buildu, kontroly metadat, podepisování a nasazení na staging nebo do obchodu s aplikacemi pro beta testování. Klíčový rozdíl — rozhodnutí o vydání do produkce dělá člověk (manažer, vlastník produktu). CD dělá verzi „jedním kliknutím“ — jednoduchou a bezpečnou.

Continuous Deployment

Continuous Deployment je plná automatizace: každá změna, která projde všemi fázemi CD pipeline, je automaticky odeslána do produkce bez ručního potvrzení. Continuous Deployment je použitelný pro SaaS produkty a webové služby, ale v mobilním vývoji se používá zřídka kvůli politikám obchodů s aplikacemi (App Store Review, Google Play Review vyžaduje ruční odeslání).

PraxeAutomatizaceVydání do produkceTypické pro
CISestavení + testyNeJakékoliv projekty
CDSestavení + testy + release build + doručeníTlačítkemMobilní aplikace
Continuous DeploymentPlná: sestavení → testy → doručení → vydáníAutomatickyWebové služby, SaaS

Continuous Delivery pro mobilní aplikace

CD pro mobilní aplikace má zvláštnosti, které jej odlišují od webových a backend pipeline. Mobilní verze procházejí obchody s aplikacemi (App Store Review, Google Play Review), což přidává časovou a procesní bariéru. CD automatizuje vše, co lze automatizovat před odesláním na review, aby se maximalizovala šance na projití kontroly napoprvé.

Příprava na publikaci v Google Play

Android CD pipeline zahrnuje: sestavení AAB (Android App Bundle), podepsání release klíčem, obfuskaci přes R8/ProGuard, kontrolu velikosti APK a multidex tříd, generování poznámek k verzi. Použití Gradle product flavors (free/paid, dev/staging/prod) umožňuje spravovat více konfigurací z jednoho pipeline.

Příprava na publikaci v App Store

iOS CD vyžaduje podepsání certifikáty přes Fastlane match, kontrolu souladu ikon (požadavek App Store — 1024×1024 px), validaci metadat (název, popis, klíčová slova), kontrolu nepřítomnosti privátních API. Technická validace se provádí přes altool --validate-app bez nahrávání do App Store Connect, což poskytuje rychlou zpětnou vazbu.

ruby
# Fastfile — kompletní CD pipeline pro iOS a Android
platform :ios do
  desc "iOS CD — příprava verze a nahrání do TestFlight"
  lane :deliver_to_testflight do
    capture_screenshots
    match(type: "appstore")
    build_app(
      scheme: "MyApp",
      export_method: "app-store",
      workspace: "MyApp.xcworkspace"
    )
    pilot(skip_waiting_for_build: true)
  end
end

platform :android do
  desc "Android CD — sestavení AAB a nahrání do Google Play Console"
  lane :deliver_to_internal do
    gradle(
      task: "bundleRelease",
      build_type: "Release",
      print_command: true
    )
    upload_to_play_store(
      track: "internal",
      skip_upload_metadata: true
    )
  end
end

Fastlane deliver_to_testflight shromažďuje snímky obrazovky, získává certifikáty přes match, sestavuje IPA a nahrává do TestFlight. Lane deliver_to_internal pro Android sestavuje Release AAB přes Gradle a nahrává jej na interní track Google Play Console. Oba pipeline se spouštějí z CI po projití testů.

Komponenty CD pipeline

CD pipeline se skládá z postupných fází, z nichž každá přidává důvěru v to, že verze je připravena pro uživatele. Fáze se dělí na technické (sestavení, podepisování) a produktové (kontrola metadat, snímků obrazovky, popisu). Přeskočení jakékoli fáze zvyšuje riziko odmítnutí verze obchodem s aplikacemi.

Správa verzí

Kritickou komponentou CD je automatická správa verzí. Version bump (versionCode a versionName pro Android, CFBundleVersion a CFBundleShortVersionString pro iOS) se provádí na základě Git tagů nebo předchozí verze v obchodě. Fastlane increment_version_number a příkazy Gradle (versionCode auto-increment) tento krok automatizují.

Metadata obchodu

Google Play Console a App Store Connect vyžadují: popis aplikace, klíčová slova, kategorii, hodnocení, odkazy na zásady ochrany soukromí. CD zahrnuje kontrolu existence a správnosti metadat. Fastlane deliver a supply automatizují nahrávání popisu, snímků obrazovky a ikon společně s buildem.

Gate kontroly

Před odesláním na review pipeline provádí gate kontroly: kontrolu velikosti buildu (APK větší než 200 MB Google Play odmítá), přítomnost všech lokalizací, nepřítomnost debug symbolů v release buildu, kontrolu ProGuard mapping souboru pro dekódování crash logů. Pokud jakákoli kontrola neprojde, pipeline blokuje vydání.

Automatizované testování pro CD

Úroveň důvěry v CD je přímo úměrná kvalitě automatických testů. Pokud testy nezachycují regrese, verze může rozbít produkci a tým ztrácí důvěru v CD. Mobilní CD vyžaduje tříúrovňovou pyramidu testování přizpůsobenou specifikům platformy.

Unit testy

Unit testy kontrolují obchodní logiku izolovaně. Pokrytí kódu by mělo být alespoň 70% u kritických modulů (autentizace, platby, práce se sítí). CI spouští unit testy při každém push a pokud padají, CD pipeline je blokován do opravy.

Integrační testy

Kontrolují interakci komponent: síťovou vrstvu se skutečným API (nebo mock serverem), databázi, souborový systém. Room DAO testy pro Android, Core Data testy pro iOS — příklady integračních testů. Jsou pomalejší než unit testy (1–5 minut) a provádějí se ve fázi CD, ne v CI při každém commitu.

UI a screenshot testy

Screenshot testy (snapshot testing) porovnávají obrazovky aplikace s referenčními snímky. Pokud změna kódu změnila UI, test padá a vývojář kontroluje, zda je změna očekávaná. Android podporuje Roborazzi a Paparazzi, iOS — SnapshotTesting od Point-Free. Screenshot testy se provádějí před vydáním jako součást CD pipeline.

Nejlepší postupy Continuous Delivery

Zavedení Continuous Delivery vyžaduje nejen nástroje, ale i změnu kultury týmu. Níže uvedené postupy vycházejí z mnohaletých zkušeností mobilních týmů z Googlu, Spotify a Uberu a jsou přizpůsobeny projektům jakékoli velikosti.

Feature flagy

Kód nové funkce se dodává do produkce, ale je skryt za flagem. Feature flagy umožňují vydat kód dříve, než je funkce připravena k zobrazení uživatelům, a okamžitě ji vypnout při problémech. Knihovny: LaunchDarkly, Firebase Remote Config, Unleash. Feature flagy jsou povinnou podmínkou pro CD v mobilních projektech.

Staging prostředí

Před odesláním do produkce se build nasazuje na staging — prostředí identické s produkcí, ale s testovacími daty. QA inženýři kontrolují funkci na staging buildu nainstalovaném přes TestFlight nebo Internal Testing track. Pokud staging projde, build dostane schválení k odeslání na review do obchodu.

Poznámky k verzi a changelog

CD automaticky generuje poznámky k verzi na základě commit messages. Conventional Commits (feat:, fix:, chore:) a Git tagy ve formátu semantic versioning umožňují analyzovat historii změn. Fastlane changelog_from_git_commits shromažďuje změny mezi posledními dvěma tagy a formátuje je pro obchod s aplikacemi.

Monitoring po vydání

CD nekončí publikováním — po vydání se spouští monitoring: crash rate, ANR rate pro Android, doba spuštění, četnost selhání plateb. Pokud metriky překročí normální hranici, CD pipeline by měl verzi automaticky vrátit nebo informovat tým. Nástroje: Firebase Crashlytics, Sentry, New Relic.

kotlin
// Příklad Feature Flagu s Firebase Remote Config pro CD
class FeatureManager(
    private val remoteConfig: FirebaseRemoteConfig
) {
    fun isNewCheckoutEnabled(): Boolean {
        return remoteConfig.getBoolean("new_checkout_enabled")
    }

    fun getRecommendedVersion(): String {
        return remoteConfig.getString("minimum_app_version")
    }
}

// Použití v kódu
if (featureManager.isNewCheckoutEnabled()) {
    showNewCheckoutScreen()
} else {
    showLegacyCheckoutScreen()
}

Často kladené otázky

Čím se Continuous Delivery liší od Continuous Deployment?

Continuous Delivery (CD) automatizuje přípravu verze, ale rozhodnutí o nasazení nechává na člověku. Continuous Deployment je CD + automatické vydání do produkce bez účasti člověka. V mobilním vývoji je Continuous Deployment nemožný kvůli povinnému review obchody s aplikacemi.

Jak se ujistit, že se release build neliší od otestovaného?

Používejte stejný build pro všechny fáze: CI testuje debug build, CD sestavuje release build ze stejných zdrojů. Fastlane build_app a Gradle assembleRelease izolují konfiguraci sestavení. Dodatečně spouštějte smoke testy na release buildu v CD pipeline před odesláním do obchodu.

Lze zavést CD pro již publikovanou aplikaci?

Ano, CD se zavádí do jakéhokoli projektu. Začněte s automatizací jedné fáze — například sestavení release buildu. Poté přidejte podepisování, pak nahrávání do TestFlight. Postupně rozšiřujte pipeline. Hlavní je nesnažit se automatizovat vše najednou: CD se zavádí iterativně.

Jak souvisí Feature flagy s CD?

Feature flagy jsou klíčovým enablerem CD. Umožňují dodávat kód do produkce, aniž by byl zapnut pro uživatele. Pokud se funkce ukáže jako nestabilní, flag se vypne bez přestavění aplikace. Firebase Remote Config a LaunchDarkly se integrují s CD pipeline a spravují se přes webové rozhraní nebo API.

Jak často dělat verze při používání CD?

S CD dělají týmy verze týdně nebo každé dva týdny. Elite týmy z DORA reportu provádějí více vydání denně přes Continuous Deployment (pro serverovou část). Pro mobilní aplikace je optimální frekvence jednou za 1–2 týdny: review App Store trvá 1–3 dny a častější verze nedávají uživatelům čas si změn všimnout.

Shrnutí

  • Continuous Delivery (CD) — automatizace přípravy verze se zachováním ručního rozhodnutí o nasazení do produkce
  • CD je založen na CI a přidává: release sestavení, podepisování, kontrolu metadat a doručení do obchodu s aplikacemi
  • Fastlane — standardní nástroj pro CD v mobilním vývoji, podporující Android i iOS z jednoho Fastfile
  • Feature flagy a staging prostředí — povinné postupy pro bezpečné CD v mobilních projektech
  • Gate kontroly (velikost buildu, lokalizace, debug symboly) blokují vydání při nesouladu s požadavky obchodu
  • DORA metriky dokazují: týmy s CD vydávají 208krát častěji a s menším rizikem
  • Doporučení: zavádějte CD iterativně — začněte automatickým sestavením release buildu, poté přidejte podepisování, pak nahrávání do TestFlight

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také