Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Info

Add your comments directly to the page. Include links to any relevant research, data, or feedback.

...

Status
colourYellow
titleIn progress

...


Page Properties


Target release2019-M1
Epic
Jira Legacy
serverSystem JIRA
serverIdf37df377-51a7-3f0b-bde6-77fa6960492d
keyEDOP-70
Document status
Status
colour

...

Yellow
title

...

INPROGRESS

...

Document owner

...

...

...

...



...

...

Background

  • Existing mono-repo is fattened, need to break it down into multiple mono repos and structure it to manage the open-source and the internal developer community.
  • Need a simple and efficient branching strategy to handle core and state-specific changes.
  • Enhance the code-review through pull requests.

...

Proposed Repository Structure: 

We will have a repository structure same as our layered architecture. We will have multiple repositories divide into followings:

1. Corecore/Infra
2. Business services [Collections, Billing etc]
3. Individual Modules Municipal services[PGR,PT, TL, FNOC etc]
4. MDMS (Application Bootstrapping Configs)
5. Front end (Single Repository with multiple module wise folders)
6. Config (Any other configurations - Centralised) 
7. Seed files for products
8. Config files for persister, indexer, report
9. Libraries [Tracer, mdms-client etc]
10. Docs → Swagger/Open API contracts, web sequence diagrams etc.

State Level:
- MDMS
- Config -- state level seed files
- Additional module customizations
- Front-End-UI

...


Platform Repos:

Repo StructureBranching StrategyReview Process

Core: 

  • egov-accesscontrol
  • egov-common-masters
  • egov-commondata-workflowuploader
    egov-custom-consumeregov-data-uploaderenc-service
    egov-filestore
    egov-idgen
    egov-indexer
    egov-localization
    egov-location
    egov-mdms-service
    egov-notification-mail
    egov-notification-sms
    egov-otp
    egov-persister
    egov-pg-service
    egov-searcher
    useregov-otptelemetry
    egov-user
    egov-workflow-v2
    libraries
    report
    tenant

New branching structureImage Removed

No other branches except MASTER, no state specific branch here
  • user-otp
    zuul

Image Added

  • Anything in MASTER is deploy-able, all CI/CD pipelines are only from master.
  • Developers are expected to have short-lived feature & hotfix branches which are then merged onto master via PR.
  • Forking workflow is a convenient way to share branches with 3rd party/open-source developers. Everybody should still be using branches to isolate individual features
  • 3rd party developers follow Forking Workflow, they are pulled into developer’s local repository.
  • Anything in MASTER is deployable, all CI/CD pipelines are only from master.

Image RemovedImage Added

  • Everyone creates pull request and only code-owners checks & approves merge to master. Everyone else can still comment.
  • Can elect the code-owners based on tech/files or overall code base and architectural knowledge.
  • Code quality check with codacy is mandatory and runs as part of every pull request.
  • WIP: should be used when there are subsequent commits
  • JIRA ticket should be prefixed as a topic name for the PR
  • Anticipated PRs and the relevant discussions could be discussed on the daily SCRUM meetings.
- Authors, Reviewers, peers, approver

Business Modules:

  • hr-employee-v2
  • hr-masters-v2billing-service
  • collection-services
  • billing-service
  • egf-instrument
  • egf-master

Feature modules:

  • pt-calculator-v2
  • pt-services-v2
  • tl-calculator
  • tl-services
  • rainmaker-pgr
  • collection-receipt-voucher-consumer +CE
  • water wtms +CE
  • severage stms +CE
  • BPA/DCR +CE
  • finance +CE

Image Removed

  • egov-apportion-service
  • egov-hrms
  • finance-collections-voucher-consumer

Image Added

  • Master branch holds the core /common code and will maintain it own release and review cycle.
  • State branches are create from the master and continue as an isolated and specific custom code.
  • Needing the reusable components, there could be the PR to share the code b/w Master & States.
  • There should be a codeowners who maintains master branch
  • State teams also have designated codeowners including the Developers are expected to have short-lived feature & hotfix branches which are then merged onto master via PR.
  • Forking workflow is a convenient way to share branches with 3rd party/open-source developers.
  • 3rd party developers follow Forking Workflow, they are pulled into developer’s local repository.


Image Added

  • Everyone creates pull request and only code-owners checks & approves merge to master. Everyone else can still comment.
  • Can elect the code-owners based on tech/files or overall code base and architectural knowledge.
  • Code quality check with codacy is mandatory and runs as part of every pull request.
  • WIP: should be used when there are subsequent commits
  • JIRA ticket should be prefixed as a topic name for the PR
  • Anticipated PRs and the relevant discussions could be discussed on the daily SCRUM meetings.
- Authors, Reviewers, peers, approver


Libraries:   DONE

  • mdms-client
  • tracer
  • services-common
  • enc-client

Image Added

  • Developers are expected to have short-lived feature & hotfix branches which are then merged onto master via PR.
  • The repository hosts common libraries which are used across core and business modules.
  • The modules hosted in the repo are usually built and artefacts published to Nexus / Artifactory which are then re-used by other modules.
  • Artefacts release and versioning strategies to be followed strictly. 

Image Added

  • Everyone creates pull request and only code-owners checks & approves merge to master. Everyone else can still comment.
  • Can elect the code-owners based on tech/files or overall code base and architectural knowledge.
  • Code quality check with codacy is mandatory and runs as part of every pull request.
  • WIP: should be used when there are subsequent commits
  • JIRA ticket should be prefixed as a topic name for the PR
  • Anticipated PRs and the relevant discussions could be discussed on the daily SCRUM meetings.
- Authors, Reviewers, peers, approver

Municipal services:   DONE

  • egov-user-event
  • property-services
  • pt-calculator-v2
  • pt-services-v2
  • rainmaker-pgr
  • tl-calculator
  • tl-services



  • Modules are expected to have hooks through which state specific requirements can be met via sidecars rather than introducing the changes into the platform code-base itself.
  • Each of the feature module repos are to contain some sort of deployment packaging to help implementation teams / partners get up and running quickly. (Helm is one such)
  • States can opt to eject out from the platform's release by forking the repository and make any changes in forked repository and handle releases independently.
  • Such forked repositories can sync with upstream and stay up to date with the platform's releases.


  • Everyone creates pull request and only code-owners checks & approves merge to master. Everyone else can still comment.
  • Can elect the code-owners based on tech/files or overall code base and architectural knowledge.
  • Code quality check with codacy is mandatory and runs as part of every pull request.
  • WIP: should be used when there are subsequent commits
  • JIRA ticket should be prefixed as a topic name for the PR
  • Anticipated PRs and the relevant discussions could be discussed on the daily SCRUM meetings.
- Authors, Reviewers, peers, approver



InfraOps: (Private)   DONE

  • Kubernetes manifests
  • Infra configs
  • nginx config
  • kibana config
  • Dockerfiles
  • Jenkins


  • The repository will contain all devops related source code (GitOps) such as kubernetes manifests, configs etc.
  • State or individual deployments is handled by one file per deployment, which in turn affects all other manifests.
  • States can opt to eject out from the platform's release by forking the repository and make any changes in forked repository and handle releases independently.
  • Everyone creates pull request and only code-owners checks & approves merge to master. Everyone else can still comment.
  • Can elect state specific code-owners / implementation team who will be gatekeepers.

Doc:Swagger/Contracts/web  Done

  • Core
  • Business
  • Features
  • Web
  • Mob
  • Option to have it published in confluence


WebFrontend (UI):

  • citizen
  • employee
  • employee-tradelicence
  • ui-uploader
  • report
Image Removed

Mob: (Android)Frontend (Mobile):

  • PuraSeva, AP Municipal
  • PGR, mSeva
Image Removed


  • Modules are expected to have hooks through which state specific requirements can be met via sidecars rather than introducing the changes into the platform code-base itself.
  • States can opt to eject out from the platform's release by forking the repository and make any changes in forked repository and handle releases independently.
  • Such forked repositories can sync with upstream and stay up to date with the platform's releases.
  • States also have the option to use their own UI while using our APIs alone.
https://levelup.gitconnected.com/using-pre-commit-and-pre-push-git-hooks-in-a-react-project-6c83431ef2bd

Config-Files: (PrivateCommon)

  • MDMS, MDMS client
  • Seed files
  • migration files ++ ap 
  • Persister
  • Indexer
  • JenkinsFiles ++ ap 
  • Dockerfiles ++ ap 
  • Tracers

Infra-services: (private)

  • zuul
  • nginx --- seperate config for each service
  • telemetry
  • telemetry-kafka-streams
  • rainmaker-custom-service
  • es
  • kibana

Image Removed

Action items

  •  
  • Migration files 
  • Persister  – Service repo
  • Indexer - Service repo







State or Implementation Team Repos:

Repo StructureBranching StrategyReview Process

State Extentions:

  • rainmaker-custom-service
  • custom-js-css-injection
  • egov-custom-consumer + CE
  • collection-receipt-voucher-consumer +CE
  • water wtms +CE
  • severage stms +CE
  • BPA/DCR +CE
  • finance +CE


  • The repository hosts extensions which exist to carry out state specific requirements but are not common enough to be part of the platform.
  • This repository is entirely state specific and is not part of the platform.


  • Everyone creates pull request and only code-owners checks & approves merge to master. Everyone else can still comment.
  • Can elect state specific code-owners who will be gatekeepers.

MDMS Data :

  • Role Actions
  • Feature Module Masters
  • Business Module Masters
  • Tenant Data
  • Location Data


  • The repository contains various master data which enable the functioning of core and business modules.
  • The config files in this repository are pulled into the deployment directly and hence it also makes sense to have a separate repo or branch for environments such as UAT & PRD.
  • This repository is state specific and is not part of the platform, although a repo with sample data will be maintained for DEV & QA.


  • Everyone creates pull request and only code-owners checks & approves merge to master. Everyone else can still comment.
  • Can elect state specific code-owners / implementation team who will be gatekeepers.
  • JSON format check is mandatory and runs as part of every pull request.

Config-Files: 

  • Seed files
  • Migration files 
  • Persister
  • Indexer


  • The repository maintains a folder based structure and holds DB migration seed files, module specific config files.
  • The config files in this repository are pulled into the deployment directly and hence it also makes sense to have a separate repo or branch for environments such as UAT & PRD.
  • This repository is state specific and is not part of the platform, although a repo with sample data will be maintained for DEV & QA.
  • Everyone creates pull request and only code-owners checks & approves merge to master. Everyone else can still comment.
  • Can elect state specific code-owners / implementation team who will be gatekeepers.


Action items

  •  Branching strategies graphs
  •  All repositories are to be private?
  •  Digit open source fork from private repo
  •  namespace sidecar





Task

Notes

1Break the repos as per the above and duplicate into the same or new org

Create a POC with the 


















Outcome