Проектът Сicada развива система за автоматизация на сборките, подобна на GitHub Actions

Достъпната отворена система за автоматизация на сборъчни процеси Сicada позволява да се разгръне инфраструктура на ваш сървър, подобна на GitHub Actions, Azure DevOps и Gitlab CI, без да зависи от облачни услуги. Кодът на проекта е написан на Python и се разпространява под лицензия AGPLv3.

Системата автоматично стартира сценарии за сборка и тестване на кодови бази при определени събития, като влизане на push-заявка в Git, създаване на издания, отваряне/затваряне на issue и отваряне/затваряне на pull-заявки. Отличителната черта на Сicada е предоставянето на логика за работа с предметно ориентиран функционален език за програмиране, който поддържа променливи, изрази, цикли, условни блокове и вградени функции. on git.push fn test(compiler): env.CC = compiler echo Testing (compiler) shell make clean all let compilers = [„gcc“, „clang“] for compiler in compilers: test(compiler)

Предложеният език позволява лесно създаване на обработчици, които трудно могат да бъдат описани в конфигурационни файлове в YAML формат, и дава възможност да се избегне използването на външни скриптове на Shell или Python. При това, реализираният подход решава и проблема с несъвместимостта на YAML форматите за конфигурация, използвани в различни платформи за автоматизация на сборки. В Сicada се предлагат платформа-независими универсални типове събития, които позволяват свързването на един и същ сценарий за автоматизация с различни платформи; например, обработчик за push-заявки може да бъде прикрепен към събития, постъпващи от GitHub и Gitlab.

Особено внимание се обръща на безопасното съхранение на токени и пароли, използвани за достъп до API, репозитории и среди за инсталиране на резултатните сборки. Подобна конфиденциална информация се съхранява в криптиран вид (AES-GCM с 256-битов ключ) с помощта на инструментария на HashiCorp Vault. За всеки репозиторий и точка на инсталация се създава отделен ключ за криптиране, ключовете автоматично се актуализират на всеки 30 дни, а хранилището на ключовете се стартира на отделен сървър.

Секретните данни по подразбиране не се предават чрез променливи среди, а в репозитория се отваря само достъп за четене. Съществува вградена защита от подмяна на команди в изразите, осигуряваща автоматично екраниране на опасни конструкции, например, изразът ‘let name = «; rm -rf /»; echo Hello, (name)’ няма да доведе до изпълнението на командата «rm». От оптимизациите се отбелязва вградената система за кеширане на резултатите от компилацията и зареждането на ресурси.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster