Dagger
SDLC / Policy-as-Code
Pipeline'y CI/CD jako kod, uruchamiane w kontenerach, przenośne.
Dagger pozwala definiować pipeline’y CI/CD jako kod uruchamiany w kontenerach, identycznie lokalnie i na dowolnym CI. Każdy krok to operacja na kontenerach z cache’owaniem, więc buildy są powtarzalne i szybkie, a logikę pipeline’u piszesz w wybranym języku (Go, Python, TypeScript) albo wywołujesz przez CLI. Koniec z „działa tylko na CI” — ten sam pipeline odpalisz na laptopie.
Kiedy używać
- Chcesz przenośnych pipeline’ów niezwiązanych z jednym dostawcą CI (np. Gitea Actions, ale też lokalnie).
- Zależy Ci na powtarzalności i cache’owaniu kroków build/test.
- Wolisz logikę CI w prawdziwym języku zamiast rozrastającego się YAML-a.
Przykład użycia
# ten sam pipeline lokalnie i w CI
dagger call test --source=.
dagger call build --source=. export --path=./dist
// funkcja pipeline w Go (skrót)
func (m *Eiac) Test(ctx context.Context, source *Directory) (string, error) {
return dag.Container().From("node:20").
WithDirectory("/src", source).WithWorkdir("/src").
WithExec([]string{"npm", "ci"}).
WithExec([]string{"npm", "test"}).
Stdout(ctx)
}
Warto wiedzieć
- Uruchamiasz z dowolnego CI — wystarczy Docker; dobrze pasuje do Gitea Actions.
- Cache warstw kontenerów znacząco skraca czas powtarzanych buildów.