Het Cicada-project ontwikkelt een automatiseringssysteem voor builds, vergelijkbaar met GitHub Actions

Het open systeem voor automatisering van bouwprocessen Cicada maakt het mogelijk om een infrastructuur te implementeren op je eigen server, vergelijkbaar met GitHub Actions, Azure DevOps en Gitlab CI, zonder afhankelijk te zijn van cloudservices. De code van het project is geschreven in Python en wordt verspreid onder de AGPLv3-licentie.

Het systeem kan automatisch build- en testscenario's starten bij het optreden van bepaalde gebeurtenissen, zoals het ontvangen van een push-verzoek in Git, het creëren van releases, het openen/sluiten van issues en het openen/sluiten van pull-verzoeken. Een opvallend kenmerk van Cicada is het bieden van een logica-definiërende domeinspecifieke programmeertaal die variabelen, expressies, lussen, voorwaardelijke blokken en ingebouwde functies ondersteunt. 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)

De aangeboden taal maakt het eenvoudig om handlers te creëren die moeilijk te beschrijven zijn in configuratiebestanden op basis van het YAML-formaat, en biedt de mogelijkheid om zonder externe Shell- of Python-scripts te werken. Deze benadering lost ook het probleem op van de incompatibiliteit van YAML-configuratieformaten die op verschillende automatiseringsplatforms worden gebruikt. In Cicada worden platformonafhankelijke universele gebeurtenistypes aangeboden, die het mogelijk maken om hetzelfde automatiseringsscenario aan verschillende platforms te koppelen; een handler voor push-verzoeken kan bijvoorbeeld aan gebeurtenissen uit GitHub en Gitlab worden gekoppeld.

Bijzondere aandacht wordt ook besteed aan de veilige opslag van tokens en wachtwoorden die worden gebruikt voor toegang tot API's, repositories en omgevingen voor het installeren van de resulterende builds. Dergelijke gevoelige informatie wordt in versleutelde vorm (AES-GCM met een 256-bits sleutel) opgeslagen met behulp van de tools van HashiCorp Vault. Voor elke repository en installatiepunt wordt een aparte encryptiesleutel aangemaakt, en de sleutels worden automatisch elke 30 dagen vernieuwd; de sleutelopslag draait op een aparte. de server.

Standaard worden geheime gegevens niet via omgevingsvariabelen doorgegeven, en in de repository wordt alleen leesrechten verleend. Er is een ingebouwde bescherming tegen commando-injectie in expressies, wat automatische escaping van gevaarlijke constructies garandeert, bijvoorbeeld, de expressie ‘let name = «; rm -rf /»; echo Hello, (name)’ zal niet leiden tot de uitvoering van het commando «rm». Onder de optimalisaties valt de ingebouwde caching van compilatie-uitkomsten en het laden van middelen.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster