Il progetto Cicada sviluppa un sistema di automazione delle build simile a GitHub Actions

È disponibile un sistema di automazione dei processi di build aperto chiamato Cicada, che consente di implementare un'infrastruttura sul proprio server, simile a GitHub Actions, Azure DevOps e Gitlab CI, indipendente dai servizi cloud. Il codice del progetto è scritto in Python e distribuito con licenza AGPLv3.

Il sistema è in grado di avviare automaticamente script di build e test delle codebase al verificarsi di determinati eventi, come la ricezione di una richiesta push in Git, la creazione di release, l'apertura/chiusura di issue e l'apertura/chiusura di pull request. Una caratteristica distintiva di Cicada è la fornitura di una logica di lavoro per un linguaggio di programmazione funzionale orientato agli oggetti, che supporta variabili, espressioni, cicli, blocchi condizionali e funzioni incorporate. 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)

Il linguaggio proposto consente di creare facilmente gestori che sono difficili da descrivere in file di configurazione basati su formato YAML, e offre la possibilità di fare a meno del collegamento di script esterni in Shell o Python. Inoltre, l'approccio implementato affronta anche il problema di incompatibilità dei formati YAML di configurazione utilizzati su diverse piattaforme di automazione delle build. In Cicada, sono offerti tipi di eventi universali indipendenti dalla piattaforma, che consentono di associare lo stesso script di automazione a diverse piattaforme; ad esempio, il gestore delle richieste push può essere collegato a eventi provenienti da GitHub e Gitlab.

Un'attenzione particolare è dedicata alla memorizzazione sicura di token e password utilizzati per l'accesso alle API, ai repository e agli ambienti di installazione delle build risultanti. Tale informazione riservata è memorizzata in forma crittografata (AES-GCM con chiave a 256 bit) utilizzando gli strumenti di HashiCorp Vault. Per ogni repository e punto di installazione viene generata una chiave di crittografia separata; le chiavi vengono automaticamente aggiornate ogni 30 giorni, e l'archivio delle chiavi è avviato su un'unità separata. server.

I dati riservati di default non vengono trasmessi tramite variabili d'ambiente e nel repository viene aperto solo l'accesso in sola lettura. Esiste una protezione integrata contro la sostituzione di comandi nelle espressioni, che garantisce l'escape automatico di costrutti pericolosi; ad esempio, l'espressione ‘let name = «; rm -rf /»; echo Hello, (name)’ non porterà all'esecuzione del comando «rm». Tra le ottimizzazioni, si segnala un sistema di caching integrato per i risultati di compilazione e il caricamento delle risorse.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster