C# · devops · Inne · Programowanie

O Cake słów kilka

Natknęłam się na Cake w ramach deploymentu botów w pracy. Cake pozwala pisać build skrypty w C#. Więc zamiast ręcznie uruchamiać skrypty, albo bawić się Powershellem, można je zaprogramować w znanym mi języku. Co lepsze, można stworzyć repozytorium i w nim trzymać cały kod związany z deploymentem. Pliki Cake mają rozszerzenie .cake

Cake działa zarówno na Windowsie, Linuxie, i macOs. Jego dokumentacja jest całkiem niezła – zachęcam do czytania. Dodatkowo jest to projekt opensource dostępny na GitHubie.

Jak tylko wyszukać Cake w google? Samo słowo „Cake” daje wyniki lekko odmienne od spodziewanych ;p

Polecam więc używanie pełnej nazwy „cake build”:

Możliwości Cake

Tasks

W Cake definiuje się Taski, które są jakąś określoną jednostką pracy.

Task("TestTask")
    .Does(() =>
	{
		//...
	});

Dependencies

Możemy definiować kolejność wywoływania tasków oraz je grupować:

Task("TestTask")
    .IsDependentOn("Task1")
    .IsDependentOn("Task2")
    .IsDependentOn("Task3")
    .Does(() =>
	{
		//...
	});

Finally

Jeśli mamy potrzebę zdefiniować coś na koniec taska (obojętnie, czy zakończył się on powodzeniem, czy nie), korzystamy z bloku Finally():

Task("TestTask")
    .Does(() =>
	{
		//...
	})
    .Finally(() =>
	{
		//...
	});

Criteria

Chcemy wywołać task tylko w konkretnym przypadku np. w zależności od wartości zmiennej środowiskowej? Używamy Criteria():

var isLocalBuild = BuildSystem.IsLocalBuild;

Task("TestTask")
	.WithCriteria(!isLocal)
    .Does(() =>
	{
		//...
	});

Setup i Teardown

Gdy potrzeba skonfigurować coś na początku lub końcu całego skryptu, można użyć odpowiednich metod Setup() i Teardown().

Setup(context =>
{
    // Executed BEFORE the first task.
});

Teardown(context =>
{
    // Executed AFTER the last task.
});

Add-in

Jeśli potrzebujemy jakiejś dodatkowej paczki np. do obługi plików, wystarczy w górnej części pliku zdefiniować jej źródło (najlepiej z określeniem konkretnej wersji) i dodać odpowiedni using:

#addin "nuget:https://api.nuget.org/v3/index.json?package=Cake.FileHelpers&version=3.1.0"

using Cake.FileHelpers;

A coś więcej?

Cake pozwala również na inne rzeczy m.in. współdzielenie kontekstu, taski asynchroniczne, error handling i wiele więcej. Zachęcam do czytania dokumentacji.

A o tym, jak wykorzystać Cake z konkretnymi przykładami będziecie mogli poczytać już w następnym wpisie.


Post powstał pod patronatem firmy, w której aktualnie pracuję: Objectivity.

Grafikę tytułową zaprojektował niezastąpiony zespół designu!


Podoba Ci się to, co tworzę? Chcesz dostawać informacje o:
– wydarzeniach, które organizuję lub wspieram (np. konferencje, meetupy, webinary)
– inicjatywach, które organizuję lub wspieram (np. GeekWeekWro, DevAdventCalendar)
– moich prelekcjach, kursach i szkoleniach
– wyróżnionych artykułach z mojego bloga

0% SPAMu, 100% informacji! Krótko i na temat.

6 myśli na temat “O Cake słów kilka

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google

Komentujesz korzystając z konta Google. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s