Saadaval on avatud automaatika süsteem S каждude, mis võimaldab teie serveris üles seada infrastruktuuri, mis sarnaneb GitHub Actions'i, Azure DevOps'i ja Gitlab CI'ga, sõltumatult pilveteenustest. Projekti kood on kirjutatud Pythonis ja on jaotatud AGPLv3 litsentsi alusel.
Süsteem suudab automaatselt käivitada ehitus- ja testimisstsenaariume, kui teatud sündmused, nagu push-päringu tegemine Git'is, versioonide loomine, issue'ide avamine/sulgemine ja pull-päringute avamine/sulgemine, toimuvad. Sajaduni iseloomulik joon on kindla funktsionaalse programmeerimiskeele loogika määratlemine, mis toetab muutujaid, väljendeid, silmusid, tingimuslikke plokke ja sisseehitatud funktsioone. on git.push fn test(kompilaator): env.CC = kompilaator echo Testimine (kompilaator) shell make clean all let kompilaatorid = [«gcc», «clang»] for kompilaator in kompilaatorid: test(kompilaator)
Pakutud keel võimaldab hõlpsasti luua töötlust, mida on raskesti kirjeldada YAML formaadis konfiguratsioonifailides, ja välistab vajaduse kasutada väliseid Shell või Python skripte. Samuti lahendab rakendatud lähenemine probleemid, mis on seotud erinevates automaatikate loomise platvormides kasutatavate YAML konfiguratsiooni formaatide ühilduvusega. Cicadas pakutakse platvormist sõltumatuid üldisi sündmuste tüüpe, mis võimaldavad sama automatiseerimise stsenaariumi siduda erinevate platvormidega, näiteks võib push-päringute töötleja olla seotud GitHubist ja GitLabist pärinevate sündmustega.
Eriti suurt tähelepanu pööratakse tokenite ja paroolide turvalisele hoidmisele, mida kasutatakse API-dele, hoidlatele ja tulemuslike kogumiste paigalduskeskkondadele juurdepääsemiseks. Taolised konfidentsiaalsed andmed hoitakse krüpteeritud kujul (AES-GCM 256-bitise võtmega) HashiCorp Vaulti tööriista abil. Iga hoidla ja paigalduspunkti jaoks genereeritakse eraldi krüpteerimisvõti, võtmed uuendatakse automaatselt iga 30 päeva tagant, võtmete hoidmine toimub eraldi serveril.
Süsteemi vaikealad ei edastata keskkonnamuutujate kaudu ning repositoryle antakse vaid lugemisõigus. On olemas sisseehitatud kaitse käskude sisestamise eest väljenditesse, mis tagab ohtlike konstruktsioonide automaatse kõrvaldamise, näiteks väljend 'let name = «; rm -rf /»; echo Hello, (name)' ei too kaasa käsu 'rm' täitmist. Optimeerimistest tasub välja tuua sisseehitatud süsteem kompileerimistulemustest ja ressursside laadimistest kassi.
Allikas: opennet.ru
