Languages

Aeolus is implemented using different components, each of which is responsible for a specific part of the system. The main components, structured by their language, are:

  • Python: The main language used for the generation.

    • API: The main entry point for all interactions with Aeolus. It is used to generate and translate the CI configuration files, and to trigger the CI jobs.

    • CLI: Using the same code base as the API, the CLI is a command line tool that allows users to interact with Aeolus from the command line.

  • TypeScript: The language used for the web interface.

    • Aeolus Playground: A web interface that allows users to interact with Aeolus from a web browser, without the need to install any software.

  • Java: The language used for the Bamboo generator.

    • Bamboo Generator: A tool that generates the Bamboo configuration files from the CI configuration files.

Local Dev Setup

To set up a local development environment, you will need to use a virtual environment, we use venv with pip-tools for this purpose.

To create a virtual environment, follow the official Python documentation: https://docs.python.org/3/library/venv.html

After creating the virtual environment, you can install the dependencies using pip:

cd api
pip install -r requirements.txt
cd cli
pip install -r requirements.txt

After installing the dependencies, you can use the CLI using the following commands:

cd cli
python main.py --help

The cli will guide you through the available commands. How updating the requirements.txt works, is described in the two files respectively.

To run the API, you can use the following command:

cd api
uvicorn --reload --host 127.0.0.1 --port 8090 main:app --reload

This will start the API on http://127.0.0.1:8090.

To run the Aeolus Playground, you can use the following command:

cd playground
npm install
npm start

To run the Bamboo Generator, you can use the following command:

cd bamboo-generator
./gradlew shadowJar --no-daemon -x :generateJsonSchema2Pojo
cp ./build/libs/bamboo-generator*-all.jar bamboo-generator.jar
java -jar bamboo-generator.jar

You can of course also use the IDE of your choice to run, develop, and debug the different components, the above commands are just examples.

Other Systems

Seeing as Aeolus is meant to be a complementary tool to Artemis, please refer to the Artemis documentation for more information on how to set up a local development environment for Artemis, including the documentation on how to set up Jenkins and Bamboo for local development.

Production Setup

If you want to set up Aeolus in a production environment, you can use the provided Docker images and compose files. You can find the docker compose files in the deployment directory.

If you choose to secure the API with a token, you also need to give Aeolus the following environment variables:

AEOLUS_API_KEYS=<your-api-key>
# if you want to use jenkins as ci system
JENKINS_URL=<jenkins-url>
JENKINS_USERNAME=<jenkins-username>
JENKINS_TOKEN=<jenkins-password-of-the-user>

# if you want to use bamboo as ci system
BAMBOO_URL=<bamboo-url>
BAMBOO_USERNAME=<bamboo-username>
BAMBOO_TOKEN=<token-of-the-user>

The AEOLUS_API_KEYS environment variable is a comma-separated list of API keys that are allowed to access the API. If you want to use the Jenkins or Bamboo generator, you also need to provide the respective environment variables. The key, if it is set, needs to be provided in the Authorization header of the request with the prefix Bearer.