Woodpecker CI - lekki, samohostowany silnik CI/CD sterowany plikiem .woodpecker.yml w repozytorium, open source alternatywa dla GitHub Actions dla repozytoriów trzymanych w Gitea na Saplo.
Środowisko
| Runtime | Oficjalne obrazy Docker woodpeckerci/woodpecker-server i woodpeckerci/woodpecker-agent, plus własny kontener docker:dind jako izolowany silnik budowania - pipeline'y NIE dostają dostępu do Dockera całego Boxa. Baza we współdzielonym MySQL Saplo, nginx Boxa jako reverse proxy |
| Zalecany plan | Box M+ (trzy kontenery naraz, min 2 GB RAM, min 10 GB dysku - obrazy pipeline'ów sciagaja sie od nowa przy kazdym buildzie) |
Przykładowy saplo.yaml
Plik saplo.yaml w katalogu głównym repozytorium opisuje, jak Saplo ma zbudować i uruchomić aplikację. Wygeneruje go też komenda saplo init.
version: 1
name: my-ci
stack: woodpecker-ci
app_id: 1234
Pełny opis wszystkich pól znajdziesz na stronie Plik saplo.yaml.
Jak wdrożyć
Ten stack wdrożysz na trzy sposoby - wybierz wygodny dla siebie:
- Z panelu - tworzysz aplikację klikami, kod wgrywasz później przez CLI lub Git.
- Saplo CLI - z katalogu projektu:
saplo init, potemsaplo deploy. - Deploy z GitHub - podłączasz repo raz, każdy push wdraża się sam.
# Najszybsza droga - z katalogu projektu
$ npm install -g @saplo/cli
$ saplo login
$ saplo init
$ saplo deploy
Dobrze wiedzieć
- Logowanie wyłącznie przez OAuth Gitea - Woodpecker nie ma własnej rejestracji. Zanim zainstalujesz, załóż aplikację OAuth2 w swojej instancji Gitea (Ustawienia -> Aplikacje) i podaj Client ID/Secret w opcjach instalacyjnych razem z loginem administratora.
- Po instalacji dokończ parowanie: wróć do aplikacji OAuth2 w Gitea i ustaw Redirect URI na adres Woodpeckera z dopiskiem /authorize - bez tego logowanie kończy się błędem redirect_uri_mismatch.
- Pipeline'y budują się w odizolowanym, wewnętrznym Dockerze tej aplikacji, nie w Dockerze całego Boxa - żadna inna aplikacja w Boxie nie jest wystawiona na kod z pipeline'u.
- Pełna instrukcja parowania z Gitea i podglądu logów trafia do pliku WOODPECKER-SETUP.txt w katalogu aplikacji.
- Kopia (automatyczna od Box L, ręcznie snapshotem na każdym planie) obejmuje wolumen aplikacji (konfiguracja, certyfikaty wewnętrznego Dockera) oraz bazę danych.
Gotowy na deploy?
Wybierz plan Box i postaw aplikację Woodpecker CI jeszcze dziś.