An open assembly system of assembly processes sicada is introduced. This system allows the server to expand the infrastructure similar to Github Actions, azure devops, and gitlab ci, independent of cloud services. The project code is written in Python and is distributed under the license of AGPLV3.
The system has the capability to automatically launch assembly and testing scenarios of code bases when triggered events occur. These events include the receipt of a PUSH request to GIT, the creation of releases, the opening/closing of an Issue, and the opening/closing of a PULL request. The distinguishing feature of Cicada is its provision to determine the logic of the work of a subject-oriented functional programming language, which supports variables, expressions, cycles, conditional blocks, and built-in functions.
The offered language makes it easier to create handlers that may be difficult to describe in configuration files based on YAML format, and eliminates the need for external scripts in Shell or Python. Additionally, this approach resolves compatibility issues with the configuration YAML formats used in different assembly automation platforms. Sicada offers universal types of events that allow the same automation scenario to be used on different platforms. For example, the PUSH questioning processor can be attached to events coming from Github and Gitlab.
Particular attention is given to the safe storage and encryption of passwords used for access to APIs, repositories, and environments for installing resulting assemblies. Confidential information is stored in an encrypted form (AES-GCM with a 256-bit key) using hashicorp vault. A separate encryption key is created for each repository and installation points, and the keys are automatically updated every 30 days. The keys storage operates on a separate server.