Jak automatizovat kompilaci

Automaticky přeloženo z Deepl

Od verze 4D v19 můžete spustit kompilaci projektu jednoduchým příkazem. Možná vás zajímá, k čemu to můžete použít!

Váš tým se může skládat z několika vývojářů, tak proč neautomatizovat kompilaci při každém odeslání kódu na server pro správu zdrojů? Vždy je snazší identifikovat chybu, když je rychle odhalena.

Dalším případem je, když se váš projekt skládá z několika komponent. Můžete napsat metodu, která zkompiluje, sestaví a poté zkopíruje komponentu do hostitelské databáze.

Tento blog se bude zabývat různými technickými body, které jsou velmi užitečné pro vytvoření vlastních automatizačních nástrojů, spolu s příkladem aplikace.

Spuštění aplikace 4D pomocí příkazového řádku

Aplikaci 4D můžete spustit prostřednictvím příkazového řádku zadáním projektu, který se má otevřít, a výběrem možností, které se mají aktivovat. Zde si připomeneme některé možnosti, které mohou být velmi užitečné pro automatizaci akce.

Bezhlavě

Pro provádění opakujících se a automaticky spouštěných úloh je přítomnost rozhraní zbytečná. Pokud v příkazovém řádku předáte volbu„–headless„, bude vaše aplikace 4D, 4D Server nebo sloučená aplikace spuštěna bez rozhraní.

Podrobnější informace naleznete v tomto příspěvku na blogu: Bezhlavé aplikace 4D.

Bez dat

Volba„–dataless“ umožňuje požádat 4D, aby neotevíral datový soubor. Načtení datového souboru není nutné například v případě, že vytvoříte skript pro spuštění kompilace.

Aby bylo jasno, režim bez dat se používá jen zřídka. Pokud otevřete 4D v režimu bez dat, nemůžete po spuštění 4D otevřít datový soubor pomocí příkazů 4D. Všechny podrobnosti najdete v dokumentaci.

Uživatelský parametr

Automatizace opakujících se úloh neznamená, že pokaždé děláte přesně totéž. Můžete například každou hodinu spustit úlohu s možnostmi rychlé a snadné kontroly a každou noc spustit jinou úlohu, která zabere více času a zdrojů.

Volba„–user-param“ umožňuje předat v příkazovém řádku řetězec. Pak pomocí Get database parameter příkazu a konstanty user param value můžete získat řetězec předaný v příkazovém řádku.

$result:=Get database parameter(User param value;$userParam)

Další podrobnosti si můžete přečíst v tomto příspěvku na blogu.

Kompilace projektu pomocí příkazu

Díky Compile project příkazu můžete spustit kompilaci projektu předáním jeho cesty. Příkaz také přijímá objekt options, který umožňuje nastavit kompilaci. Můžete například zadat závislosti projektu, cíl Intel a Silicon atd.

$status:=Compile project($file; $options)

Pokud dojde k chybě, vrátí příkaz objekt se seznamem chyb složený z chybové zprávy, názvu metody a čísla řádku. Jako připomínku můžete použít příkaz METHOD OPEN PATH příkaz otevřít editor kódu přímo na příslušném řádku. Chcete-li zjistit všechny možnosti tohoto příkazu, doporučujeme přečíst si tento příspěvek na blogu nebo dokumentaci.

Je důležité znát možnosti, které tento příkaz nabízí, a vědět, jak jej správně používat. Další skvělou zprávou však je, že jej můžete spustit v projektu v interpretovaném režimu, s volbami„–dataless“ a„–headless“, bez vývojářské licence! Pokud tedy ke kompilaci aplikace používáte externí serverové řešení, například pomocí akce git na GitHubu, nemusíte na server třetí strany vkládat licenci.

Generování souboru protokolu

U automatických úloh je nezbytné mít k dispozici protokoly, abyste věděli, že úloha byla provedena, a abyste v případě problému mohli obnovit chyby. Ve skutečnosti to však není tak jednoduché. Správa se v systémech MacOS a Windows liší. Architektura souborů na serverech může být odlišná. A skript může být spuštěn na jednom z vašich serverů nebo na externím serveru.

Řešení, které navrhujeme, je použití příkazu LOG EVENT příkaz s konstantou Into system standard outputs. Pak můžete standardní proud a proud chyb přesměrovat do jednoho nebo několika souborů v příkazovém řádku. Je tedy snadné přizpůsobit se vašemu prostředí, aniž byste museli měnit skript.

V neposlední řadě může být užitečné vědět, kdy byl skript spuštěn, kdy došlo k chybě. Stránka Timestamp Příkaz je k tomu ideální; vrací řetězec znaků, který lze snadno přidat do souboru protokolu s přesností na milisekundy.

LOG EVENT(Into system standard outputs; Timestamp+" - Jsem informace"; Error information)
LOG EVENT (Into system standard outputs; Timestamp+" - Jsem chyba"; Error message).

Konkrétní příklady

Voilà! Podle všech předchozích tipů jsme vytvořili projekt dostupný na GitHubu, který slouží ke kompilaci projektu. Do příkazu„–user-param“ předáme řetězcový objekt, který obsahuje tři atributy:

  • path: cesta k projektu, který se má zkompilovat (povinný atribut)
  • options: objekt options předávaný příkazu Compile Project (nepovinný atribut).
  • quit: předejte false, aby se 4D po kompilaci nezavřel, což je užitečné pro testy; ve výchozím nastavení se 4D po spuštění zavře (nepovinný atribut).

Automatizovat kompilaci projektu

Zde je několik příkladů příkazových řádků, nezapomeňte přizpůsobit cesty.

Spustit kontrolu syntaxe:

  • macOS
/.../Contents/MacOS/4D 
--structure /.../Tool_Compilation.4DProject 
--user-param "{\"path\":\"/.../myProject.4DProject\",\"options\":{\"targets\":[]}}"
--headless --dataless 
2>.../errlog.txt 1>.../infolog.txt
  • Windows
C:\...DD.exe 
--structure C:\...\Tool_Compilation.4DProject 
--user-param "{\"path\":\"/.../myProject.4DProject\",\"options\":{\"targets\":[]}}"
--headless --dataless 
2>C:\...\errlog.txt 1>C:\...\infolog.txt

Zde je obsah našeho souboru infolog.txt; soubor errlog.txt je prázdný:

2021-08-25T17:38:52.197Z - Start script
2021-08-25T17:38:54.961Z - user-param: {"path":"/.../myProject.4DProject","options":{"targets":[]}}
2021-08-25T17:38:54.964Z - {"success":true,"errors":[]}
2021-08-25T17:38:54.999Z - End script

Kompilace s výchozím nastavením:

  • macOS
/.../Contents/MacOS/4D 
--structure /.../Tool_Compilation.4DProject 
--user-param "{\"path\":\"/.../myProject.4DProject\"}" 
--headless --dataless 
2>.../errlog.txt 1>.../infolog.txt
  • Windows
C:\...DD.exe
--structure C:\...\Tool_Compilation.4DProject 
--user-param "{\"path\":\"/.../myProject.4DProject\"}" 
--headless --dataless 
2>C:\...\errlog.txt 1>C:\...\infolog.txt

Kompilace s volbami předanými příkazu Compile project: MacOS:

  • macOS
/.../Contents/MacOS/4D 
--structure /.../Tool_Compilation.4DProject 
--user-param "{\"path\":\"/.../myProject.4DProject\",\"options\":{\"targets\":[\"x86_64_generic\"]}}" 
--headless --dataless 
2>.../errlog.txt 1>.../infolog.txt
  • Windows
C:\...DD.exe
--structure C:\...\Tool_Compilation.4DProject 
--user-param "{\"path\":\"/.../myProject.4DProject\",\"options\":{\"targets\":[\"x86_64_generic\"]}}" 
--headless --dataless 
2>C:\...\errlog.txt 1>C:\...\infolog.txt

Co bude následovat?

Nyní je to na vás. Neváhejte se na GitHubu nebo na fóru podělit o své nápady nebo řešení pro automatizaci úloh.

Vanessa Talbot
• Product Owner • Vanessa Talbot se připojila k programovému týmu 4D v červnu 2014. Jako Product Owner má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací. Její úlohou je také zajistit, aby implementovaná funkce odpovídala potřebám zákazníka. Od svého příchodu pracovala na definování klíčových prvků ve 4D. Pracovala na většině nových funkcí preemptivního multi-threadingu a také na velmi složitém tématu: nové architektuře pro enginované aplikace. Vanessa má titul z Telecom Saint-Etienne. Svou kariéru začala ve Výzkumném ústavu kriminalistickém jako vývojářka pro audiovizuální oddělení. Působila také v mediální a lékařské oblasti jako expertka na technickou podporu, produkci i dokumentaci novinek.