dotCMS / dotCMS/core

Evergreen: Top level Epic

Open
#30,647 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

OKR : Evergreen Team : Platform
Dominant language
Java
Stars
970
Forks
486
Avg merge
3d 33m
Merged PRs (30d)
170

Description

WIP:

Placeholder for other epics and tasks related to evergreen and how they fit together to the overall goals

```[tasklist]

Testing what we've got today
Cluster Deployment
  • [x] dotCMS/core#30645
  • [ ] dotCMS/core#31157
deprioritized for now
  • [ ] dotCMS/helm-charts#15
PR from "Push" to "Deployment" Flow ("core" Github Flow)
  • [ ] dotCMS/core#27842

  • [ ] dotCMS/core#30655
    Enable marking a particular release/docker image as having an issue and whether it is not recommended to upgrade to or recommended to downgrade from if already there.
    Enable marking a priority on a release e.g. for security issues.

  • [ ] Create flow charts showing phases of deployment including stages where validations are applied and possible exception handling when an issue is found. Include where batching of PRs is included and take into account Feature Flags allow unfinished features moving into released code.

Traceability

Easily identify what images a PR was included in, and in relation which images
Easily identify what git commit hash on main and release branches any github image relates to. Can provide info in running app, could add a --version option in github startup and add info in console on startup.

Create a changelog for use in above using conventional commits
Could provide initial auto created changelog, and then allow for manual curation after the fact to prevent documentation from blocking release. Improving automation going forward (AI update of changelog?)

Testability

Define generic smoke test suite that can be run on any implementation / version to ensure it is working as expected. Can we add a version range that a test can apply to, and change tests based upon enabled flags on the server. E.g. Only test a feature if the customer is using it. Can we provide tests for when a feature is enabled or disabled. Tests should be non-evasive and not themselves break the server and should always be cleaned up. Start with simple cases.

Dry runs with customer data to find issues / gaps

Attempt to upgrade directly from LTS releases, both basic with starter and actual customer data, to local dev build and identify issues requiring manual intervention. Make use of manual upgrade steps and procedures that would be made to fix for the customer. From the issues identify what automatic interventions could have been made to prevent the issue.

Identify impact, complexity and scope of PRs to help feed into testing requirements and any version incompatibilities

Add tagging based upon file changes and use filters to match, focus on changes that could cause incompatibility in Data whether in database, search server or shared filesystem e.g. assets, push publishing data structures. Examples could be "REST API", "DB Schema", "Push Publishing", "Configuration",

Observability and Error Remediation

Cleanup logs, review production logs and identify over logging and Exceptions that do not indicate an issue that needs to be resolved. Update logging default levels or modify code with correct level. Define sets of logging levels that can be turned up to diagnose errors in particular areas when required.

Define broad areas where temporary issues can be expected and define rules on how to handle them, make use of System State service. Top two examples could be issues connecting to db or search server. In first case it must be handled cleanly if the servers are restarted or there is a temporary connection issue.

  • [ ] dotCMS/core#29460
Modularity

Push for use of CDI and java interfaces to break dependencies between features and make it easier to turn on and off individual feature with minimal code changes. Allows also for easy backport of features to LTS versions and moves towards a "domain-driven-design" way of thinking.

Processes for handling urgent issues

Metrics for PR flow

K8S Environment services

Support for full named data snapshot/restore/clone within our k8s
Try to remove limitations of time and data transfer/duplication costs (zfs based?)
Ensure we can pull up a consistent state with both filesystem data and db.
Can we easily through APIs revert to a named state.
Can we easily create a snapshot state before and after upgrade.
Can we store metadata with a state that identifies the docker image version that it relates to

Upgrade Scheduling: Each cluster could have its own configuration defining rules for when the actual upgrade and modification of the docker image will occur. It should be possible for these options to be set within the UI if we allow for that instance. e.g. upgrade asap, upgrade on a particular day, within a window of time.
Initially no UI component

Process to update the image assigned to the instance.
We should move to assign an instance to a specific image sha and update that rather than relying on a changeable docker tag for repeatability and change managment as well as supporting downgrade.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No source files, tests, or single entry point are named. Start by reviewing the linked issues and the sections for deployment, traceability, testability, observability, and Kubernetes services, then split one concrete outcome into a scoped child issue with explicit completion criteria.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, git, github, java, kubernetes
Domain
cloud, devops, infrastructure, observability, release, testing-qa
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.