The Charles project has been archived by Zup Innovation. It might start again eventually; however, we won't deliver support for now.
1. About
2.1. Requirements
2.2. Installation
2.3. Usage
4. Contributing
6. License
7. Community
8. Security
CharlesCD is an open source project that deploys quickly, continuously, and securely. It allows development teams to simultaneously perform hypothesis validations with specific groups of users.
It is possible to segment your customers through specific characteristics (circles) and, at the same time, submit several versions of the same application for testing with users of the circles.
Currently, CharlesCD works with these modules:
The project's concept refers to the theory proposed by biologist Charles Darwin (1809-1882), that evolution occurs through adaptation to a new environment. In the development's case, this logic happens through constant improvements in applications, for example, when you build and test hypotheses to deploy more effective releases.
CharlesCD offers a solution to the community: we want to enhance the deployment and hypotheses testing work, because it will allow you to identify problems faster and execute possible solutions to solve them.
For this reason, we consider CharlesCD a Darwinism's application within the development and programming universe.
- Simple segmentation of users based on their profile or even demographic data;
- Creation of deployment strategies in an easier and more sophisticated way using circles;
- Easy version management in case of multiple releases in parallel in the production environment;
- Monitoring the impacts of each version using metrics defined during the creation of the deployment.
To install Charles your environment needs the following requisites:
- Kubernetes
- Helm
- Istio (version>= 1.7 and enabled sidecar injection on the deploy namespace of your application).
- Prometheus, in case you want to use metrics.
CharlesCD's installation considers these components:
- Charles' architecture specific modules;
- Keycloak, used for the project's authentication and authorization. However, if you already have an Identity Manager (IDM) and you want to use it, you have just to configure it during Charles' installation;
- A PostgreSQL database for backend modules (
charlescd-moove
,charlescd-butler
,charlescd-villager
,charlescd-gate
echarlescd-compass
) and Keycloak; - A Redis to be used by Circle Matcher module (
charlescd-circle-matcher
); - A RabbitMQ for
charlescd-hermes
module's use. - Ingress which is used to expose the HTTP and HTTPS routes outside the cluster to services inside the cluster. When you install Charles, it already has a default ingress, however, you can use your own.
For more details, check out the documentation.
You can find Charles's documentation on our website.
Check out our contributing guide to learn about our development process, how to propose bug fixes and improvements, build and test your changes to Charles.
This is a security layer for the project and for the developers. It is mandatory.
Follow one of these two methods to add DCO to your commits:
1. Command line Follow the steps: Step 1: Configure your local git environment adding the same name and e-mail configured at your GitHub account. It helps to sign commits manually during reviews and suggestions.
git config --global user.name “Name”
git config --global user.email “[email protected]”
Step 2: Add the Signed-off-by line with the '-s'
flag in the git commit command:
$ git commit -s -m "This is my commit message"
2. GitHub website You can also manually sign your commits during GitHub reviews and suggestions, follow the steps below:
Step 1: When the commit changes box opens, manually type or paste your signature in the comment box, see the example:
Signed-off-by: Name < e-mail address >
For this method, your name and e-mail must be the same registered on your GitHub account.
Please follow the Code of Conduct in all your interactions with our project.
Do you have any question or suggestion about Charles? Let's chat in our forum.
Keep evolving.
Check out our security policies.