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

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

Системата е способна автоматично да стартира сценарии за сглобяване и тестване на кодови бази при определени събития, като получаване на push заявки в Git, създаване на релийзи, отваряне/затваряне на issues и отваряне/затваряне на pull заявки. Отличителна черта на Cicada е предоставянето на логика за работа чрез предметно ориентиран функционален език за програмиране, който поддържа променливи, изрази, цикли, условни блокове и вградени функции. 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 формати за конфигурация, използвани в различни платформи за автоматизация на сглобявания. В Cicada се предлагат универсални типове събития, независими от платформата, които позволяват свързването на един и същ автоматизационен сценарий с различни платформи, например, обработчикът на 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