felipevolpone / freeipa-pr-ci Goto Github PK
View Code? Open in Web Editor NEWThis project forked from freeipa/freeipa-pr-ci
FreeIPA Pull Request CI
License: GNU General Public License v3.0
This project forked from freeipa/freeipa-pr-ci
FreeIPA Pull Request CI
License: GNU General Public License v3.0
The PR CI as it was designed do not support the needs of lots of runners (60+ runners), with that in mind, I propose a new architecture for the project.
This is a diagram of how I imagine it:
This is the workflow described in details:
GitHub (GH) trigger the web server when a PR is created or when a PR it's modified (using webhooks).
With the PR information, the web server will read the .freeipa-pr-ci.yaml
spec file and will create a Task to each test described on it. A Task is basically an object with info of the test, the priority, if that Task depends on another one, etc.
The web server will add the Tasks in the TASKS_QUEUE
on the RabbitMQ. This queue is only for tasks that the runners will consume and run. Important to say that we can have different kinds of tests to run, some of then consume less resource, but others demand bigger runners (VMs with more RAM and vCPU). So, we will need different queues for each kind of tests to run. Tests that consume less resource, will be added to the "medium tasks queue" and the bigger ones to "big tasks queue". In practice, we will not have only the BITASKS_QUEUE
, but BIG_TASKS_QUEUE
, SMALL_TASKS_QUEUE
and so on.
The runners consume the TASKS_QUEUE
and each runner will get a task to run. Important to say that RabbitMQ has its own mechanisms to prevent that a message in a queue could be consumed by two consumers. With the Task on hands, the runner knows what do to.
After running the tests, the runner will create a Result object, that will be added to the RESULTS_QUEUE
on the RabbitMQ.
A Publisher (this is could be a service running on some machine) that consumes the RESULTS_QUEUE
queue will get the Result object and publish the logs on FedoraPeople
and change the GH task list, showing if the tests succeed or not (as we already do today)
Advantages:
Disadvantages:
Challenges:
PS:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.