V minulém díle jsme se podívali na nástroj mage a jeho použití pro sestavování #Go programů. Tentokrát se podíváme na jednu specialitku, která asi nebyla předem zřejmá, ale rozhodně stojí za prozkoumání.
Jak z minula víte, mage potřebuje tzv. magefile. Magefile je vlastně go-skript na stereoidech. Pokud tedy chceme sestavit projekt, který používá magefile, tak zadáme na příkazovou řádku něco jako mage a máme hotovo (když je tedy definovaný defaultní cíl). Pokud bychom ovšem chtěli, aby se náš projekt takto pěkně spustil na našem CD/CI serveru, tak budeme muset přidat ještě něco - instalaci samotného mage. Takže náš skript by vypadal jako
go get -u -d github.com/magefile/mage\
cd $GOPATH/src/github.com/magefile/mage\
go run bootstrap.go
mage
Samozřejmě jsou tu i jiné varianty - například použít docker, kde v image by byl už mage přítomný, nebo pokud máte dedikovaný server, tak se mage nainstalovat přímo na něj.
Mnohem pohodlnější je ale možnost si z magefile udělat spustitelný soubor. Prostě exáč. Ruku na srdce, jak často měmíte svůj ma(k|g)efile? A mezi tím, než ho zase změníte si můžete svůj magefile zkompilovat. Velmi jednoduše, stačí jen být v adresáři, kde máte svůj magefile a zadat
mage -compile ./build
Samotný mage -compile ignoruje GOOS a GOARCH - pokud chcete například na MacOS vyrobit build pro Linux (což je mimochodem realná varianta - většina CD/CI stojí na Linuxu), tak musíte zadat něco jako
mage -compile -goos=linux -goarch=amd64 ./build
kde ./build je spustitelný soubor, který nahrazuje mage. Takto zkompilovaný soubor přijímá tyto parametry:
-l- seznam cílů (targets)-t- timeout sestavování-v- “ukacaný” výstup, tedy nejden chyby, ale i výpis zestdoutastderrspuštěných programů.
poslední parametr může být cíl, který chcete explicitně spustit - třeba clean - záleží na vás.
Mage je v tomto směru minimalistický, takže počítám, že více se o něm rozepisovat nebudu, v každém případě si myslím, že stojí za zvážení.