Proyek Cicada sedang mengembangkan sistem otomasi pembangunan yang mirip dengan GitHub Actions

Cicada, sistem otomatisasi build sumber terbuka, kini tersedia. Sistem ini memungkinkan Anda menerapkan infrastruktur yang tidak bergantung pada cloud, seperti GitHub Actions, Azure DevOps, dan Gitlab CI, di server Anda. Kode proyek ditulis dalam Python dan didistribusikan di bawah lisensi AGPLv3.

Sistem dapat secara otomatis menjalankan skrip build dan test untuk basis kode ketika peristiwa tertentu dipicu, seperti penerimaan permintaan push di Git, pembuatan rilis, pembukaan/penutupan masalah, dan pembukaan/penutupan permintaan pull. Fitur khas Cicada adalah penyediaan bahasa pemrograman fungsional khusus domain untuk mendefinisikan logika alur kerja, mendukung variabel, ekspresi, loop, blok kondisional, dan fungsi bawaan. on git.push fn test(compiler): env.CC = compiler echo Pengujian (compiler) shell make clean all let compilers = ["gcc", "clang"] for compiler in compilers: test(compiler)

Bahasa yang diusulkan memungkinkan pembuatan handler yang sulit dijelaskan dalam berkas konfigurasi berbasis YAML dengan mudah, sehingga menghilangkan kebutuhan akan skrip Shell atau Python eksternal. Pendekatan ini juga mengatasi ketidakcocokan format konfigurasi YAML yang digunakan di berbagai platform otomatisasi build. Cicada menawarkan tipe peristiwa universal yang independen terhadap platform, yang memungkinkan skrip otomatisasi yang sama ditautkan ke berbagai platform. Misalnya, handler permintaan push dapat dilampirkan ke peristiwa yang berasal dari GitHub dan Gitlab.

Perhatian khusus juga diberikan pada penyimpanan token dan kata sandi yang aman yang digunakan untuk mengakses API, repositori, dan lingkungan instalasi untuk hasil build. Informasi sensitif tersebut disimpan dalam bentuk terenkripsi (AES-GCM dengan kunci 256-bit) menggunakan HashiCorp Vault. Kunci enkripsi terpisah dihasilkan untuk setiap repositori dan titik instalasi, kunci diperbarui secara otomatis setiap 30 hari, dan keystore berjalan pada instance terpisah. server.

Secara default, data sensitif tidak diteruskan melalui variabel lingkungan, dan repositori bersifat baca-saja. Terdapat perlindungan bawaan terhadap substitusi perintah dalam ekspresi, yang secara otomatis menghindari konstruksi berbahaya. Misalnya, ekspresi 'let name = "; rm -rf /"; echo Hello, (name)' tidak akan mengeksekusi perintah "rm". Optimalisasi mencakup sistem caching bawaan untuk hasil kompilasi dan pemuatan sumber daya.

Sumber: opennet.ru

Beli hosting yang andal untuk situs dengan perlindungan DDoS, server VPS VDS 🔥 Beli hosting website andal dengan perlindungan DDoS, server VPS VDS | ProHoster