Skip to content
/ baas Public

Build as a Service (BaaS): Build Arbitrary Java Projects

License

Notifications You must be signed in to change notification settings

Mondego/baas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build as a Service: BaaS

BaaS is a service that helps users to instantly build an arbitrary Java projects hosted on GitHub. It is designed in two distinct modules, BaaS-UI and BaaS-Core.

JBF High Level Architecture

BaaS-Core

BaaS-Core is a microservice employing the JBF architecture. It receives a build request from BaaS-UI and downloads the latest version of the user given repository’s branch. Then it attempts to build that repository. After building the project, it makes a package of build artifacts and sends a downloadable link of that package to the BaaS-UI as a response to the build request. The service is implemented in Python Flask application that triggers JBF execution on user given build request.

BaaS-UI

BaaS-UI is a front-end Angular web application that provides a web interface to the users. It allows the users to give a Java repository GitHub URL and branch as input and displays the build-project overview, statistics, build status, and the downloadable package link. Users download the build package with this link. BaaS-UI also provides a dashboard showing the current status of the service and the available compiled projects.

BaaS Works in Action http://styx.ics.uci.edu:5001/ (A Lightweight Version)

BaaS-Demo.mp4

Environment Setup & Requirements

  • Run BaaS-Core (Backend)

BaaS-Core a web service wrapper of JBF that executed JBF on a single project. Since it is built on top of JBF, to run it first edit jbf.config. Please read the details here, how to update the jbf.config. BaaS-Core fully relied on JBF generated FQN index and Jar collection and these two are host machine dependent. Therefore, you need a pre-constructed FQN index that maps a Jar collection on the host machine. Now to run the service, execute the following commands and the BaaS-Core will be available on http://127.0.0.1:5000/

cd BaaS-Core
python3 jbf.web.py
  • Run BaaS-UI (Frontend)

BaaS saves project information in Firebase database. Therefore, before running BaaS-UI, first create a service.json to save firebase credential in the root directory of BaaS-UI. Also to consume request from BaaS-Core set the base backendBaseUrl (http://127.0.0.1:5000/) in the Angular environment baas/BaaS-UI/src/environment/. Then run the server. You will see the BaaS-UI is running in http://localhost:4200

cd BaaS-UI
npm install
ng serve

Note

We are hosting a lightweight version of BaaS on http://styx.ics.uci.edu:5001/. We have a large collection of Jars and the pre-constructed FQN index. With our Jar collection and index, we successfully compiled 91,076 Java projects This version will work on a single request and will not accept concurrent build requests. If you need to try BaaS in your work that requires concurrent requests and performing large number of project's build, please contact us to this email [email protected]. We will host a different version of BaaS for you and allow you to utilize it for instantly building GitHub Java projects.

Contact

If you have any questions or find any issues, please contact at [email protected]

License

This repository is licensed under GNU General Public License v3.0