Novinky v platformě pro vývojáře

:ribbon: Mergado Apps 0.3.18

Release date

27. červen 2018

Změny

  • Aplikace nyní mohou používat jiné úložiště, než je Mergado Appcloud.

    • Většina dalších změn, které jsou uvedeny níže, vychází z této změny, která v některých oblastech zásadně mění paradigma, v jakém appky existují a fungují.
    • U appky v Developers je nová stránka Úložiště, kterou může vývojář použít ke správě úložiště zvlášť vývojové a zvlášť produkční verze appky.
      • Defaultní úložiště je vždy Appcloud. Potom lze každé verzi appky nastavovat jiné URL, které Mergado používá:
        1. Při odesílání hook requestů.
        2. Při posílání payloadů na endpointy pravidel appky.
        3. Pro zobrazení IFRAMEů (widget i plná verze) při zobrazování appky v UI.
      • Pokud alespoň jedna verze appky nepoužívá Appcloud úložiště, pak při vytváření nového vydání na stránce Releases není možné spouštět tradiční release proces na Appcloudu.
      • Hook URL musí začínat stejnou URL, jako je Základní URL appky.
      • Lze nastavovat způsob routingu aplikace. Oproti stávajícímu pretty routingu ve stylu:
        .../eshop/1/project/2
        
        … lze nově nastavit i jednodušší routing přes GET parametry:
        .../?eshop=1&project=2
        
  • Přepracovaný a zjednodušený životní cyklus aplikace.

    • Možnost “soběstačných” releasů aplikace.
      • Umožňuje použití pokročilejších CI a CD nástrojů.
      • Aplikace nově nepodléhá tradičnímu cyklickému vývoj-žádost o release-potvrzení podporou-release-vývoj....
      • Nové verze si vývojář řeší a vydává sám, bez explicitního potvrzování podporou Mergada.
        • Pokud vývojová i produkční verze aplikace užívá Appcloud úložiště, lze tradiční “appcloudovský” release spouštět i nadále - při vytvoření nového vydání na stránce Releases v Developers je k dispozici checkbox, který toto zajistí. (Více o této přepracované stránce níže.)
        • Pokud alespoň jedna verze na Appcloudu nesídlí, celý releasovací proces si musí vývojáři řešit sami. To však zároveň vývojářům umožňuje integraci pokročilých build či CI systémů do jejich vývojové workflow. A toto vše je možné, protože…
    • Nově má vývojář aplikace SSH přístup k oběma verzím appky (dříve byl přístup pouze k vývojové verzi).
      • Autoři aplikace tak mají větší kontrolu nad tím, co se s aplikací děje - např. je potřeba mít přístup k logům, je potřeba urychleně vydat fix nějaké chyby, nebo si vývojáři chtějí nakonfigurovat složitější build procesy přes nějaké externí CI nástroje.
      • Tradiční schvalovací proces toto zásadně brzdil či zcela znemožňoval.
    • Informace v Mergado Store se nyní “přelévají” tlačítkem Aktualizovat Store, bez předchozí kontroly podpory (je však o tomto aktu notifikována).
      • Poznámka: Informace se přelejí automaticky i při vytvoření nového release.
    • Přes to všechno má naše podpora v případě potřeby stále možnost zasáhnout a “zlobivou” aplikaci např. skrýt z Mergado Store, či ji u některého subjektu přímo vypnout.
  • Přepracovaná stránka Releases v Developers.

    • Namísto historie stavů mezi vývoj-žádost o release-potvrzení podporou-release-vývoj... jsou nyní na stránce s výdánímí appky vypsané běžné záznamy s novými verzemi aplikace, které vývojář může vytvářet, editovat i mazat.
    • Zatím se tato historie ukazuje jen v Developers a momentálně je především pro interní účely, aby podpora Mergada měla přehled o tom, co se v aplikaci kdy a jak změnilo.
    • V editoru “poznámek v vydání” lze používat Markdown.
  • Přepracované zabezpečení hook requestů ze strany Mergada.

    • V minulosti se o autentizaci hook requestů staral samotný Appcloud. Ten - pro vývojáře zcela transparentně - kontroloval, zda požadavky z Mergada obsahují správnou hodnotu speciální HTTP hlavičky. Pokud request na URL, kde appka přijímala hooky (.../_mergado/hook/), neobsahoval správnou hodnotu příslušné hlavičky, požadavek server vůbec nepustil dál. Protože nově appky mohou sídlit i jinde, než na Appcloudu, tento magický mechanismus se musel přepracovat a zjednodušit.
    • Nově se o autentizaci hook requestů musí starat samotná appka (resp. její vývojáři).
    • Jak to funguje:
      • Každá stage appky má vlastní náhodně vygenerovaný a tajný klíč, tedy Webhook Secret. Tento klíč je k dispozici u appky v Developers.
      • Daný klíč zná jen Mergado a vývojáři appky.
      • Mergado tento klíč posílá v HTTP hlavičce Mergado-Apps-Webhook-Secret u všech requestů, které na appku míří - tj. všechny požadavky na hook endpoint a na endpointy pravidel aplikace.
      • Aplikace by při přijímání requestů na těchto endpointech měla kontrolovat správnou hodnotu tajného klíče - a odmítnout ty požadavky, které ji neobsahují.
      • Takto je zabráněno neoprávněným requestům od třetích stran.
  • Nový hook ping, kterým se v Developers dá jednoduše otestovat funkčnost hook endpointu aplikace.

    • U appky na stránce Přehled v Developers jsou dvě nová tlačítka (pro každou stage jedno), kterým se na hook endpoint appky dá odeslat testovací hook (POST request) v tomto formátu:

      {
      	"action": "ping"
      }
      

      Pokud se na tento request vrátí odpověď ve formátu …

      {
      	"message": "pong"
      }
      

      … považuje se hook za úspěšně vyřízený. Vrátí-li se cokoliv jiného, je to považováno za neúspěch. V obou případech se tento výsledek ihned zobrazí v UI.

  • Na Appcloudu je implementovaná možnost spouštět pre-release skript.

    • Tato možnost je k dispozici pouze v případě, že celý release appky probíhá v rámci Appcloudu. To znamená, že aby se pre-release spouštěl, musí obě stage appky musí jako úložiště používat Appcloud.
    • Jak to funguje:
      • Vývojová verze appky v rootu svého zdrojového kódu (např. /srv/production/apps/app_logbook.dev/app/) může obsahovat soubor s názvem mergado_pre_release.
      • Tento soubor se před přepsáním produkční verze verzí vývojovou zkopíruje do root adresáře se zdrojovým kódu produkční verze (např. /srv/production/apps/app_logbook/app/).
      • Zde se soubor spustí, pod uživatelem produkční verze appky. Respektuje se shebang, takže tento skript může být napsaný jak v bashi, tak třeba i v PHP.
      • Release pokračuje až po skončení tohoto skriptu (bez ohledu na výsledek). Pokud tento skript neskončí do jedné hodiny, ukončí se, výsledek se ignoruje a release pokračuje dál.
  • V Developers je nově k dispozici :uk: anglická jazyková verze Mergado Store banneru.

  • Aplikace lze nově označit jako “deprecated”.

    • U “deprecated” appky bude na její stránce v Mergado Store vidět hláška, že již není ve vývoji.
    • Lze nastavit jinou appku, jakožto nástupce, na kterou se u dané hlášky v Mergado Store bude odkazovat.
    • Je to marketing-friendly alternativa k úplnému smazání aplikace.
    • Je k tomu potřeba kontaktovat podporu Mergada.
3 Likes