En oppene System fir d'Versammlungsprozesser ze automatiséieren, Cicada, ass verfügbar, wat Iech erlaabt op Ärem Server eng Infrastruktur ähnlech wéi GitHub Actions, Azure DevOps a Gitlab CI z'installéieren, onofhängeg vu Cloud Servicer. De Projet Code ass am Python geschriwwen a gëtt ënner der AGPLv3 Lizenz verdeelt.
De System ass fäeg fir automatesch Build- an Test-Skripte fir Codebasen ze starten wann verschidden Eventer ausgeléist ginn, sou wéi d'Empfang vun enger Push-Ufro am Git, d'Schafe vu Verëffentlechungen, d'Ouverture / Zoumaache vun engem Thema, an d'Ouverture / Zoumaache vun zéien Demanden. Eng ënnerschiddlech Feature vu Cicada ass d'Bereetstellung vun enger Domain-orientéierter funktioneller Programméierungssprooch déi Variablen, Ausdrock, Loops, bedingungsblocken an agebaute Funktiounen ënnerstëtzt fir d'Operatiounslogik ze definéieren. op git.push fn test (Compiler): env.CC = Compiler Echo Testen (Compiler) Shell maachen propper all Loosst Compiler = ["gcc", "clang"] fir Compiler a Compiler: test (Compiler)
Déi proposéiert Sprooch mécht et einfach Handler ze kreéieren déi problematesch sinn ze beschreiwen an Konfiguratiounsdateien baséiert op dem YAML-Format, a mécht et méiglech ouni extern Scripten an Shell oder Python ze verbannen. Zur selwechter Zäit léist d'implementéiert Approche och de Problem vun der Inkompatibilitéit vu YAML Konfiguratiounsformater, déi a verschiddene Versammlungsautomatiséierungsplattformen benotzt ginn. Cicada bitt Plattform-onofhängeg universell Eventtypen, déi Iech erlaben datselwecht Automatisatiounsskript op verschidde Plattformen ze binden, zum Beispill, e Push-Ufro-Handler kann un Eventer befestegt ginn, déi vu GitHub a Gitlab kommen.
Besonnesch Opmierksamkeet gëtt och op déi sécher Späicherung vun Tokens a Passwierder geluecht, déi benotzt gi fir op APIen, Repositories an Installatiounsëmfeld fir déi resultéierend Builds zouzegräifen. Sou sensibel Informatioune ginn verschlësselt (AES-GCM mat engem 256-Bit Schlëssel) mat HashiCorp Vault gespäichert. Fir all Repository an Installatiounspunkt gëtt e separaten Verschlësselungsschlëssel generéiert, d'Schlësselen ginn automatesch all 30 Deeg aktualiséiert, an de Schlësselspeicher leeft op enger separater Instanz. Server.
Par défaut ginn geheim Daten net iwwer Ëmfeldvariablen iwwerdroen, an nëmmen Lieszougang gëtt zum Repository ausgezeechent. Et gëtt agebaute Schutz géint Kommandosubstitutioun an Ausdréck, déi automatesch Flucht vu geféierleche Strukturen ubitt, zum Beispill den Ausdrock 'Loosst Numm ='; rm -rf /"; echo Hallo, (Numm)' wäert de Kommando "rm" net ausféieren. Ënnert den Optimisatiounen gëtt den agebaute System fir d'Caching vun de Kompiléierungsresultater a Luede Ressourcen bemierkt.
Source: opennet.ru
