Elérhető a nyílt forráskódú Cicada automatizálási rendszer, amely lehetővé teszi, hogy saját szerverén olyan infrastruktúrát telepítsen, amely hasonlít a GitHub Actions, Azure DevOps és GitLab CI rendszerekre, függetlenül a felhőszolgáltatásoktól. A projekt kódja Python nyelven készült, és AGPLv3 licenc alatt terjesztik.
A rendszer képes automatikusan futtatni a kód alapú build és tesztelési szkripteket meghatározott események, például Git push kérések, kiadások létrehozása, problémák megnyitása/zárása és pull kérések megnyitása/zárása esetén. A Cicada kiemelkedő jellemzője, hogy egy célzott funkcionális programozási nyelvet biztosít a működési logika meghatározására, amely támogatja a változókat, kifejezéseket, ciklusokat, feltételes blokkokat és beépített funkciókat. on git.push fn test(compiler): env.CC = compiler echo Tesztelés (compiler) shell make clean all let compilers = ["gcc", "clang"] for compiler in compilers: test(compiler)
A javasolt nyelv lehetővé teszi, hogy könnyen létrehozzon kezelőket, amelyeket nehéz leírni YAML alapú konfigurációs fájlokban, és lehetőséget ad arra, hogy elkerülje külső Shell vagy Python szkriptek használatát. Ezzel a megvalósított megközelítés probléma megoldást is kínál a különböző automatizálási platformokban használt YAML konfigurációs formátumok inkompatibilitására. A Cicada független, platformoktól független eseménytípusokat kínál, amelyek lehetővé teszik, hogy ugyanazt az automatizálási szkriptet különböző platformokhoz kössön, például a push kérések kezelője köthető eseményekhez, amelyek a GitHub-ból és a GitLab-ból érkeznek.
Kiemelt figyelmet fordítanak a tokenek és jelszavak biztonságos tárolására, amelyeket API-k, tárolók és a build eredmények telepítési környezetéhez használnak. Az ilyen érzékeny információkat titkosítva tárolják (AES-GCM 256 bites kulccsal) a HashiCorp Vault eszköz segítségével. Minden tárolóhoz és telepítési ponthoz külön titkosítási kulcsot hoznak létre, a kulcsokat automatikusan 30 naponta frissítik, a kulcstároló külön szerveren fut. szerveren.
A titkos adatok alapértelmezés szerint nem kerülnek át a környezeti változókon, a tárolóhoz csak olvasási hozzáférés van engedélyezve. Beépített védelem van a parancsok behelyettesítése ellen, amely automatikusan escaping-eli a veszélyes konstrukciókat; például a ‘let name = «; rm -rf /»; echo Hello, (name)’ kifejezés nem fogja végrehajtani a ‘rm’ parancsot. Optimalizálásként megemlítendő a beépített rendszer a fordítási eredmények és az erőforrások betöltésének gyorsítótárazására.
Forrás: opennet.ru
