Git Product home page Git Product logo

zupit / charlescd Goto Github PK

View Code? Open in Web Editor NEW
335.0 23.0 78.0 645.24 MB

CharlesCD is an open source tool that makes deployments more agile, continuous and safe, which allows development teams to perform hypothesis validations with a specific group of users, simultaneously.

Home Page: https://charlescd.io

License: Apache License 2.0

Dockerfile 0.06% Groovy 13.20% Makefile 0.04% TypeScript 32.53% Java 5.99% JavaScript 8.60% HTML 10.92% Kotlin 20.09% Shell 0.13% Go 6.33% AMPL 0.32% FreeMarker 1.61% CSS 0.03% Mustache 0.15% Fluent 0.01%
hacktoberfest segmentation circles continuous-deployment opensource kubernetes istio service-mesh

charlescd's Introduction

The Charles project has been archived by Zup Innovation. It might start again eventually; however, we won't deliver support for now.

build butler build circle-matcher build compass build moove build octopipe build villager codecov License

CharlesCD logo

Table of contents

2.3. Usage




About

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:

How was the project created?

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.

What does Charles do?

  • 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.

Getting Started

Requirements

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.

Installation

CharlesCD's installation considers these components:

  1. Charles' architecture specific modules;
  2. 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;
  3. A PostgreSQL database for backend modules (charlescd-moove, charlescd-butler,charlescd-villager, charlescd-gate e charlescd-compass) and Keycloak;
  4. A Redis to be used by Circle Matcher module (charlescd-circle-matcher);
  5. A RabbitMQ for charlescd-hermes module's use.
  6. 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.

Usage

For more details, check out the documentation.

Documentation

You can find Charles's documentation on our website.

Contributing

Help us to evolve CharlesCD

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.

Developer Certificate of Origin - DCO

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.

Code of Conduct

Please follow the Code of Conduct in all your interactions with our project.

License

Apache License 2.0.

Community

Do you have any question or suggestion about Charles? Let's chat in our forum.

Keep evolving.

Security

Check out our security policies.

charlescd's People

Contributors

adauto avatar angelicalimazup avatar apucci avatar arthurpuccizup avatar barbararochazup avatar bcatanant avatar celiofilhozup avatar celiojsf avatar cpgo avatar eduardomiyoshizup avatar emiteze avatar gabrielleitezup avatar icaroafonsozup avatar iezadamascenozup avatar ifdouglas avatar leandroqo avatar leandrorodrigueszup avatar luane-aquino avatar luanecavalcantizup avatar lucasbfernandes avatar lucasmachadozup avatar lucassaleszup avatar luisaborgeszup avatar maycommit avatar monicaribeiro avatar monicaribeirozup avatar pedroborgeszup avatar ricardorames avatar thallesfreitaszup avatar washingtonsoares avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

charlescd's Issues

Butler integration/unit tests architecture are slow and sometimes unpredictable

Describe the bug
Regarding integration tests, sometimes the test fails and sometimes it doesn't. I think it is related to a problem where database interactions are not rolled back properly between tests. This should be fixed.

Regarding unit tests, their setup is very complicated and demotivating to write.

My proposal is that the team re-architect the whole integration/unit tests structure.

Documentation website not openning

Describe the bug
When trying to access https://charlescd.io/ I get a blank page and multiple errors in the console.

To Reproduce

  1. Type https://charlescd.io/ in browser URL
  2. See error

Expected behavior
Expected to open the official documentation website.

Screenshots
image

image

Your Environment

  • Browser Name and version: Google Chrome Version 83.0.4103.61 (Official Build) (64-bit)
  • OS Name and Version: macOS Catalina Version 10.15.4

Additional context
I asked a few friends about this and they were able to access the official docs just fine. I don't know why this is happening only with me.

Identify is not working

Describe the bug

To Reproduce

  1. Login in the system;
  2. Select a workspace;
  3. Click on "Circles" and select a circle;
  4. Set a segment for a specific user;
  5. Login with the user that was set on the circle segment on the system;

See that the "x-circle-id" header is equal to UNMATCHED.

Expected behavior
The "x-circle-id" header should be set to the circle id that the user was set.

All paginations on Charles using JDBC template are wrong

Describe the bug
Since we changed to JDBC template approach, all paginations that we implemented are being applied to the number of rows returned by the query, and the query in some cases returns more than one line for the same object that are being queried and paginated. Since our frontend does not query for a specific size, our application assumes Springs' default size which is 20, and then this size is applied on the LIMIT parameter in each query.

To Reproduce
Steps to reproduce the behavior (user group use case):

  1. Create a user group called A_User_Group
  2. Associate 20 members to that user group
  3. Create one more user group called B_User_Group
  4. Call the find all user groups API and note that it only returns the first user group created.

Expected behavior
All paginated APIs should apply the LIMIT parameter to each object being queried, not for each line on the resultset, or we should change our query to return one object by line.

Charles is undeploying unused components before confirming that the whole release was deployed succesfully

Describe the bug
When deploying a new release, Charles first deploys the Kubernetes pods and then triggers the Virtual Service deployment if ALL previous deployments worked correctly. If any component deployment fails, the Virtual Service deployment is not triggered and therefore the previous state of the cluster should be preserved.

During the first deployment phase, if the new deployment resulted in any unused versions, they are all undeployed immediately, which is not correct, because there is a chance the new deployment will not be used (Explained in the first paragraph).

To Reproduce
Steps to reproduce the behavior:

  1. Prepare one cluster with only 3 components deployed
  2. Deploy a release with new versions from the same 3 components described in step 1
  3. Expect one component deployment to fail
  4. See the virtual service pointing to inexistent versions in the cluster

Possible Solution
Move undeployment step to the same pipeline used for deploying the Virtual Service/Destination Rules

Logical

Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Deploys with builds made without board don't have metrics

Describe the bug
When deploying a release that was build out of Charles board, the metrics are not shown.

To Reproduce

  1. Go to circle deploy screen;
  2. Select a release not built by Charles board;
  3. Do the deploy;
  4. Go to health board;
  5. No circle has health information;

Expected behavior
When doing any deploy with charles, the health board should show the health information for every circle.

Your Environment

  • CharlesCD version 0.2.12:

Additional context
The problem seems be a data table misunderstanding, once the deploy of a release built out of Charles board, doesn't create a "feature" entity, so the components deployed query could not found any component.

The "Override release" option is active when a release is deploying

Describe the bug
The "Override release" option shouldn't be active when a release is deploying.

To Reproduce
Steps to reproduce the behavior:
Login in the system
Select a workspace
Click on "Circles" and select a circle
Deploy a release

See that the "Override release" option on the menu of the circle is active when the release still deploying.

Expected behavior
The "Override release" option shouldn't be active when the release is not deployed yet.

Card do not show names' initials for members without photo

Describe the bug
Members without photo in Cards do not show their name initials.

To Reproduce
Steps to reproduce the behavior:

  1. Login into Charles
  2. Choose some workspace
  3. Go to Hypothesis menu
  4. Choose a hypothesis
  5. Create a card and add a member that does not have a photo

Expected behavior
When a user do not have photo, the initials of it name must appear.

Error responses pattern

To improve troubleshooting and provide better integration and traceability between applications, it is necessary to define a common model to express the errors, its details and appropriate codes.

The top level of the response MUST be the error array element (may be empty, but shouldn't), and each element inside the array MAY contains any of the following properties:

  • id: a unique identifier for this particular occurrence of the problem.
  • links: a links object containing the following members:
    • about: a link that leads to further details about this particular occurrence of the problem.
  • status: the HTTP status code applicable to this problem, expressed as a string value.
  • code: an application-specific error code, expressed as a string value.
  • title: a short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem.
  • detail: a human-readable explanation specific to this occurrence of the problem.
  • source: an object containing references to the source of the error, optionally including any of the following members:
    • pointer: a JSON Pointer RFC6901 to the associated entity in the request document.
    • parameter: a string indicating which URI query parameter caused the error.
  • meta: a meta object containing non-standard meta-information about the error.

Example:

{
  "errors": [ 
    "id": "e353acec-708e-4f07-99c4-7f51d45acb25",
    "links" {
      "about": "https://docs.charlescd.io/reference/knownerrors#CB0001"
    },
    "status": "400",
    "code": "CB0001",
    "title": "Invalid email",
    "detail": "The email provided do not represent a valid email format",
    "source": {
      "pointer": "/user/email"     
    },
    "meta": {
      "component": "moove",
      "timestamp": 1593216880556
    }
  ]
}

Technical detailed information as stacktraces, memory dumps or any other information not human-friendly should not be considered here, but must be registered in appropriate log.

All errors occurred during the request processing should be catch.

Reference: jsonapi.org

Opened module do not highlight in menu

Describe the bug

The opened module do not highlight in menu.

To Reproduce

  1. Login on CharlesCD.
  2. Click on "Workspaces" and select a workspace.
  3. Click on "Modules".
  4. Click on a module and see that the line in the menu will not highlighted as a selected one.

Expected behavior

It is expected that the opened module is highlighted in the menu.

All users are being created as root

Describe the bug
The "root" checkbox is missing on "user" CRUD, and therefore all users are being created as root.

To Reproduce
Steps to reproduce the behavior:

  1. Log in as root.
  2. Go to the Users section.
  3. Click on the "Create user" button.
  4. See error

Expected behavior
The "root" checkbox should be present and its value should be sent in create/update user API requests.

Screenshots
Captura de Tela 2020-06-18 às 19 05 30

Captura de Tela 2020-06-18 às 19 07 07

Captura de Tela 2020-06-18 às 19 08 37

typo trevis on charlescd/docs/arquitetura-do-sistema.md image

Describe the bug
Typo on image on charlescd/docs/arquitetura-do-sistema.md. It should be Travis not Trevis.

To Reproduce
Steps to reproduce the behavior:

  1. Acess charlescd/blob/master/docs/arquitetura-do-sistema.md
  2. Check image
  3. Check CI part
  4. See error

Expected behavior
Travis as an example of CI integration

Screenshots
not applicable

Your Environment

  • CharlesCD version used: n/a
  • Description of environment where CharlesCD is running: n/a
  • Browser Name and version (if applicable): n/a

Additional context
n/a

Charles doesn't undeploy the successful pods of the release when a release component fails

Describe the bug
When I deploy a release that contains a module that fails to deploy, the pods that were deployed with success still run, generating an inconsistent release.

To Reproduce
Steps to reproduce the behavior:

  1. Deploy a release that contains modules that deploy with success and a module that fails;
  2. Wait for the error
  3. Check the pods on Kubernetes;

See that the pods that were successful are not undeployed.

Expected behavior
It is expected that if a release component fails to deploy, all components of the release should be undeployed.

Invalid results because there is a blank line in the segments within the circle

Describe the bug
Invalid results because there is a blank line in the segments within the circle

To Reproduce
Steps to reproduce the behavior:

  1. Open Circles
  2. Create Circle
  3. Save the name
  4. Create a role
  5. Click on "add role"
  6. Save the Circle
  7. See error: a blank role

Expected behavior
Delete a blank line when saving the circle

Screenshots
error

QueuedIstioDeployment table is unnecessary inside butler

Describe the solution you'd like
Since it is necessary that all components' deployments are finished before the virtual service deployment is triggered, it is correct to assume that all QueuedDeployment entities associated are set to RUNNING, therefore assuring that any deployment requests on those components will be forced to wait.

If all deployment requests for those components will have to wait, we could just query the deployment and trigger all components associated with it.

PS: Today the QueuedIstioDeployment entity doesn't even act like a queue

When changing workspace name, tab name does not update.

Describe the bug
When I'm editing workspace and I change its name, the tab name does not update.

To Reproduce
Steps to reproduce the behavior:

  1. Login (a profile that can see workspace settings)
  2. Select a workspace.
  3. Change workspace name.
  4. See tab with the old name.

Expected behavior
I expect that the tab name is updated after saving new name.

Screenshots
chrome-capture (5)

Missing Keycloak JWT authorization header signature validation

Describe the bug
The JWT authorization token is not being validated by Keycloak.

To Reproduce
Steps to reproduce the behavior:

  1. Change the signature segment of a valid CharlesCD JWT authorization token.
  2. Make a request to any protected CharlesCD API endpoint using the token as authorization header.
  3. See the request succeed.

Expected behavior
Any request with an invalid JWT authorization should fail and return the 401 status code.

Normalize healthcheck resources

All applications should expose a resource /health to be used for monitoring its running status. It should return HTTP 200 in case of healthy status, and 500 in case of any error.

To provide information about possible errors, it MAY return an error object array, containing more information about.
References about error structure cab be found here.

Updating previous deployment status incorrectly

Describe the bug
This scenario occurs only in the open sea's use case. If we do a deploy with success of a release with 5 components and then later we ask for a deploy that don't contains all components from open sea, we are updating the status of previous deploy to NOT_DEPLOYED, then resulting in a wrong payload of which components are deployed for that circle.

And we are not looking for the callback status to update previous deploy too. We should only update the previous deploy for that circle if the callback status were successfull for deploy or undeploy.

It's important to note that the virtual services probably would be ok and the deployments too, but moove does not represent what really is deployed in terms of components for open sea.

To Reproduce
Steps to reproduce the behavior:

  1. Do a successfull deploy in open sea with N components
  2. Ask for a deploy with N-1 components
  3. Note that the previous deploy containing N components will be updated to NOT_DEPLOYED.
  4. This will result in a wrong payload on circle's screen (showing only N-1 components).

Expected behavior
We should have a concise representation from what is applied on user's cluster in terms of deployments and virtual services.

Broken link in docs - section getting started

Describe the bug
Broken link in docs - section getting started

To Reproduce
Steps to reproduce the behavior:

  1. Go to https://docs.charlescd.io/v/v0.2.1/primeiros-passos/instalando-charles
  2. Click in "customizacão" ( https://docs.charlescd.io/primeiros-passos/instalando-charles#customizacao-total )
  3. See error

Expected behavior
Show the page

Screenshots

Your Environment

  • CharlesCD version used:
  • Description of environment where CharlesCD is running:
  • Browser Name and version (if applicable):

Additional context
Add any other context about the problem here.

When inserting a 68 character url, two characters pass from the "circle matcher" card layout

Describe the bug
When inserting a 68 character url, two characters pass from the "circle matcher" card layout as in the image

To Reproduce
Steps to reproduce the behavior:

  1. Access the Configuration screen;
  2. Access Credentials screen;
  3. In the circle matcher section, insert 68 characters according to the attachment image pattern: https://xxxx-xxxxxxx.xxxxxxxxxxxxxxxxxx.xxx/xxxxxxxxx-xxxxxx-xxxxxxx
  4. See error

Expected behavior
The entire url is expected to be inside the card.

Screenshots
evidence

Your Environment

  • CharlesCD version used: 0.2.12
  • Browser Name and version (if applicable): Google Chrome, Version 83.0.4103.116 (Official Build) (64-bit).

Removal of CM from workspace settings does not refresh screen.

Describe the bug
When I click on X to delete the circle matcher from the workspace settings, it deletes but does not refresh by removing the card.

To Reproduce
Steps to reproduce the behavior:

  1. Login (with a profile that can see workspace settings)
  2. Select workspace.
  3. Add a CM config.
  4. Click in the X to remove CM config (purple box).
  5. See that the purple box representing the configuration remains there, however the configuration was deleted.
  6. Refresh the screen. Now the card is not there anymore.

Expected behavior
When deleting the configuration, the card should disappear and the button to add a new config should be there.

When a circle is deleted the circle list is not updated

Describe the bug
When a circle is deleted the circle list is updated just when I reload the page.

To Reproduce
Steps to reproduce the behavior:

  1. Login in the system;
  2. Select a workspace;
  3. Click on "Circles" and select a circle;
  4. Go to the circle menu and delete the circle;

Expected behavior
The circle list should be updated when a circle is deleted.

Charles is triggering a deployment with repeated components

Describe the bug
When following the hypotheses board flow, after one build is created and a deploy is triggered with it, multiple component deployment requests are made to charlescd-butler, forcing it to enqueue unnecessary deployment requests that can/will create inconsistencies in the cluster.

To Reproduce
Steps to reproduce the behavior:

  1. Create one module A with multiple components;
  2. Create a hypothesis board;
  3. Create one card with the previous created module associated;
  4. Generate a new release with all the features;
  5. Deploy the new release on any circle;

Expected behavior
The request to charlescd-butler should contain the exact amount of components registered in module A.

Request with error

{
   "deploymentId":"1984ab52-e578-4f7e-bbe9-d8ed4910181f",
   "applicationName":"0fff3802-aa5d-41cf-a3f6-c05a8d4a0ed5",
   "modules":[
      {
         "moduleId":"fe25cbcf-c221-4277-bb58-e107b0d9a276",
         "helmRepository":"<obfuscated>",
         "components":[
            {
               "componentId":"25b9388e-6e6f-4dd8-87ca-c9f08698ef1c",
               "componentName":"charlescd-ui",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            },
            {
               "componentId":"3f7fdd39-6cc4-4466-bbbe-cd575114fb63",
               "componentName":"charlescd-villager",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            },
            {
               "componentId":"f2231563-929c-4aed-a93e-96fbfd5aaed6",
               "componentName":"charlescd-butler",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            },
            {
               "componentId":"7dc8407e-92e5-4e8b-b6f1-3cd61b99313b",
               "componentName":"charlescd-circle-matcher",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            },
            {
               "componentId":"f2231563-929c-4aed-a93e-96fbfd5aaed6",
               "componentName":"charlescd-butler",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            },
            {
               "componentId":"7dc8407e-92e5-4e8b-b6f1-3cd61b99313b",
               "componentName":"charlescd-circle-matcher",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            },
            {
               "componentId":"25b9388e-6e6f-4dd8-87ca-c9f08698ef1c",
               "componentName":"charlescd-ui",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            },
            {
               "componentId":"3f7fdd39-6cc4-4466-bbbe-cd575114fb63",
               "componentName":"charlescd-villager",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            },
            {
               "componentId":"3f7fdd39-6cc4-4466-bbbe-cd575114fb63",
               "componentName":"charlescd-villager",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            },
            {
               "componentId":"25b9388e-6e6f-4dd8-87ca-c9f08698ef1c",
               "componentName":"charlescd-ui",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            },
            {
               "componentId":"7dc8407e-92e5-4e8b-b6f1-3cd61b99313b",
               "componentName":"charlescd-circle-matcher",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            },
            {
               "componentId":"7a85c2a1-2181-45fd-87da-331b60651fa1",
               "componentName":"charlescd-moove",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            },
            {
               "componentId":"7a85c2a1-2181-45fd-87da-331b60651fa1",
               "componentName":"charlescd-moove",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            },
            {
               "componentId":"7a85c2a1-2181-45fd-87da-331b60651fa1",
               "componentName":"charlescd-moove",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            },
            {
               "componentId":"f2231563-929c-4aed-a93e-96fbfd5aaed6",
               "componentName":"charlescd-butler",
               "buildImageUrl":"<obfuscated>",
               "buildImageTag":"release-darwin-stable-v-1"
            }
         ]
      }
   ],
   "authorId":"c7e6dafe-aa7a-4536-be1b-34eaad4c2915",
   "description":"Deployment from Charles C.D.",
   "callbackUrl":"<obfuscated>",
   "cdConfigurationId":"b05add36-f4a8-4f7b-be1d-343c70816d38"
}

Charles is not paginating on docker hub registry integration when the number of tags in registry is greater than 100

Describe the bug
Today we only search for the first 100 tags ordered by name on user's Docker Registry.

To Reproduce
Steps to reproduce the behavior:

  1. Create a new registry configuration and register a new module that have more than 100 tags.
  2. Try to search for your tags on the override release screen on any circle.
  3. Note that only the first 100 tags are being returned.

Expected behavior
We should have pagination on backend for this service.

Implement sorting and paging in all list resources

To apply design patterns and avoid future problems related to high data volume, it is necessary to implement sorting and paging in all resources that can return a list of objects.
Following good practices, the approach must be:

Sorting

Expect the optional sort query param, having as value a comma separated list of properties, indicating the sort priority.
Each property is ordered ascending (:asc suffix) by default. So, to order descending, the property name must be suffixed by :desc.

Examples:

  • /deployments?sort=createdAt
  • /deployments?sort=createdAt:desc,title
  • /deployments?sort=createdAt:asc,createdBy:asc,title

Paging

Use optional page and size query params (mutually required) to indicate the page size and offset, respectively. Both params must be integers bigger than zero.

Examples:

  • /deployments?page=1&size=10
  • /deployments?page=100&size=5

The default page is 1 and size is 10.

Charles metrics in Prometheus don't have x-circle-source

Describe the bug
When the Prometheus read metrics exposed by Istio, the label x-circle-source is not present, the problem may be Istio generating telemetry data before passing by Envoy, so that, the envoy virtual host still hasn't put the header x-circle-source in the request.

To Reproduce

  1. Do a request in an application that was deployed by Charles;
  2. Look in Prometheus the presence of the x-circle-source in the metric istio_charles_requests_total;
  3. See that the header is not being set.

Expected behavior
The header must be set before telemetry data is generated.

Your Environment

  • CharlesCD version used: 0.2.12

CharlesCD UI is making several requests to /moove/v2/users/{email-as-base64} endpoint during login time

Describe the bug
The CharlesCD UI is making several requests to /moove/v2/users/{email-as-base64} endpoint during login time.

To Reproduce
Steps to reproduce the behavior:

  1. Open browser's developer tools.
  2. Go to the "network" section.
  3. Access CharlesCD Login screen.
  4. Insert username and password into the login form.
  5. Click in to '"continue" button.
  6. See error.

Expected behavior
CharlesCD UI should call /moove/v2/users/{email-as-base64} once.

Screenshots
Captura de Tela 2020-06-22 às 17 56 01

Captura de Tela 2020-06-22 às 17 54 39

Captura de Tela 2020-06-22 às 17 55 08

Wrong configuration name for Charles CD UI

Describe the bug
CharlesCD UI docker image name doesn't match its module name (charlescd-ui). The same issue exists for its Helm chart folder.

Expected behavior
The name should be the same for the docker image, Helm chart folder, and module.

Screenshots
Captura de Tela 2020-06-16 às 15 34 43

The "Undeploy" option is active when a release is deploying

Describe the bug
The undeploy option shouldn't be active when a release is deploying.

To Reproduce
Steps to reproduce the behavior:

  1. Login in the system
  2. Select a workspace
  3. Click on "Circles" and select a circle
  4. Deploy a release

See that the undeploy option on the menu of the circle is active when the realease still deploying.

Expected behavior
The undeploy option shouldn't be active when the release is not deployed yet.

Circle Configuration Reindex

Is your feature request related to a problem? Please describe.
When Circle-Matcher's Redis loses all its Circle configurations CharlesCD does not allow Circle configuration reindex

Describe the solution you'd like
CharlesCD should allow users to do circle configuration reindex through its UI

Front does not support ip host

Is your feature request related to a problem? Please describe.
front does not support ip host

Describe the solution you'd like
refine logic to identify host

I'm not logged out when session expires

Describe the bug
After X minutes my login session expires, however, I'm not logged out.
I receive an error (403 FORBIDDEN), but Charles UI continues there loading something forever and I do not know what is going on (as a user, it's not clear that my session ended).

To Reproduce
Steps to reproduce the behavior:
0. Open network log at your browser.

  1. Login.
  2. Access a workspace.
  3. Wait for 15 min (I don't know the time it takes to expire)
  4. Do a request to list hypothesis.
  5. See error.

Expected behavior
When session expires, I expect to be logged out.

Screenshots
After doing the steps to reproduce the behavior, you'll have something like:
image

The response will be: 'jwt signature verification failed: 'exp' claim expired at Wed, 24 Jun 2020 16:18:08 GMT'

Your Environment

  • CharlesCD version used: 0.2.12
  • Browser Name and version (if applicable): Chrome Version 81.0.4044.92 (Official Build) (64-bit)

Wrong Butler's Github Action Configuration

Describe the bug
Missing "charlescd-" prefix in Butler's docker image name on Github Action build and push step.

Expected behavior
Butler's docker images should be pushed with "charlescd-" name prefix.

Screenshots
Captura de Tela 2020-06-16 às 15 14 50

QueuedDeployment status should be set to FINISHED only when virtual service deployment finishes

Describe the bug
The QueuedDeployment entity status is being set to FINISHED before the virtual service deployment finishes, thus allowing new deployments to be triggered on the same component that is having its Virtual Service updated, allowing for inconsistencies.

To Reproduce
Steps to reproduce the behavior:

  1. Deploy a release via moove with components A, B and C
  2. Wait until the virtual service deployment phase starts
  3. Deploy a new release with the same components A, B and C
  4. See the Continuous Deployment (CD) tool be triggered

Tooltips with documentation are redirecting to 'Not Found' page

Describe the bug
There are some tooltips that redirects to a documentation page. However, some of them are "not found'.

To Reproduce
Steps to reproduce the behavior:

  1. Open Modules
  2. Create Module
  3. Click on the tooltip located on the right side of "Create module" title.
  4. Click on "View documentation".
  5. See error

Expected behavior
I expect to open a documentation link equivalent to the topic I'm looking for.

More than one tab opened for the same circle

Describe the bug
More than one tab is being opened for the same circle, depending on the number of clicks on the circle.

To Reproduce

  1. Login on CharlesCD
  2. Click on "Workspaces" and select a workspace
  3. Click on "Circles"
  4. Click on the same circle more than once to see the error: More than one tab will be opened for the same circle

Expected behavior
It is expected that just one tab is opened by circle, even if I click in the same circle several times.

Circle matcher throws "java.util.NoSuchElementException: Default circle metadata not found." when workspaceID not exists.

Describe the bug
Circle matcher throws "java.util.NoSuchElementException: Default circle metadata not found." when workspaceID not exists.

To Reproduce
Steps to reproduce the behavior:
1.Call /identify with non existent workspaceId.
2. Return message is ok, but the Stdout prints "java.util.NoSuchElementException: Default circle metadata not found."

Expected behavior
Circle Matcher should returns message telling that the "workspace not exists"

"Undeploy" option is enabled on the menu of Default circle

Undeploy option is enabled on the menu of Default circle

To Reproduce
Steps to reproduce the behavior:

  1. Login on CharlesCD
  2. Click on "Workspaces" and select a workspace
  3. Click on "Circles" and filter by "Inactive"
  4. Click on "Default"
  5. Click on the menu of the default circle to see the error: Undeploy option is listed

Expected behavior
It Is expected the interface doesn't show the "Undeploy" option when the circle is "Default"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.