Projekt Cicada rozwija system automatyzacji budów, podobny do GitHub Actions

Dostępny jest otwarty system automatyzacji procesów budowania Cicada, który pozwala na wdrożenie na własnym serwerze infrastruktury podobnej do GitHub Actions, Azure DevOps i GitLab CI, niezależnie od usług w chmurze. Kod projektu jest napisany w języku Python i rozpowszechniany na licencji AGPLv3.

System jest w stanie automatycznie uruchamiać skrypty budowania i testowania baz kodu w momencie wystąpienia określonych zdarzeń, takich jak otrzymanie żądania push w Git, tworzenie wydań, otwieranie/zamykanie problemów oraz otwieranie/zamykanie żądań pull. Wyjątkową cechą Cicada jest zapewnienie możliwości określenia logiki działania w kontekstowo zorientowanym języku programowania, który wspiera zmienne, wyrażenia, pętle, bloki warunkowe i wbudowane funkcje. on git.push fn test(kompilator): env.CC = kompilator echo Testowanie (kompilator) shell make clean all let kompilatory = ["gcc", "clang"] for kompilator in kompilatory: test(kompilator)

Proponowany język pozwala łatwo tworzyć obsługujące, które trudno opisać w plikach konfiguracyjnych opartych na formacie YAML, i umożliwia obejście się bez zewnętrznych skryptów w Shell lub Pythonie. Przy tym zastosowane podejście rozwiązuje również problem z niekompatybilnością formatów YAML używanych na różnych platformach automatyzacji budowy. W Cicada oferowane są uniwersalne typy zdarzeń niezależne od platformy, które pozwalają przypisać ten sam skrypt automatyzacji do różnych platform, na przykład, obsługujący żądania push mogą być przypisane do zdarzeń pochodzących z GitHub i GitLab.

Szczególną uwagę zwraca się również na bezpieczne przechowywanie tokenów i haseł używanych do dostępu do API, repozytoriów i środowisk instalacji wynikowych budów. Tego typu poufne informacje przechowywane są w formie zaszyfrowanej (AES-GCM z 256-bitowym kluczem) za pomocą narzędzi HashiCorp Vault. Dla każdego repozytorium i punktu instalacji tworzony jest oddzielny klucz szyfrujący, klucze są automatycznie aktualizowane co 30 dni, a magazyn kluczy działa na osobnym serwerze.

Domyślne dane nie są przekazywane przez zmienne środowiskowe, a dostęp do repozytoriów jest tylko do odczytu. Istnieje wbudowana ochrona przed wstawianiem poleceń do wyrażeń, zapewniająca automatyczne maskowanie niebezpiecznych konstrukcji, na przykład wyrażenie ‘let name = «; rm -rf /»; echo Hello, (name)’ nie spowoduje wykonania polecenia „rm”. Wśród optymalizacji wyróżnia się wbudowany system cache'owania wyników kompilacji i ładowania zasobów.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster