← Katalog
E I A C

Dagger

SDLC / Policy-as-Code

Pipeline'y CI/CD jako kod, uruchamiane w kontenerach, przenośne.

★ 12 000 Apache-2.0 #ci-cd#pipelines-as-code#containers

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.