Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Changes to the structure


Info

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

Page Properties
label


Status
Status
colourYellow
titleIn progress
Impact

Status
colourRed
titleHIGH
  

Driver
Approver
Contributors
Informed
Due date
Outcome


...

  • There should be a codeowners who maintains master branch
  • State teams also have designated codeowners including the 
    Repo StructureBranching StrategyReview Process

    Core: (Private)

    • egov-accesscontrol
    • egov-common-masters
    • egov-common-workflowegov-custom-consumer
    • egov-data-uploader
    • 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
    • user-otp
    • egov-user
    • tenantTracers
    • telemetry
    • telemetry-kafka-streams

    New branching structure

    • No other branches except MASTERAnything 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.

    • 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-v2
    • collection-services
    • billing-service
    • egf-instrument
    • egf-master

    Feature modules:

    • pt-calculator-v2
    • pt-services-v2
    • tl-calculator
    • tl-services
    • rainmaker-pgr

    Image Added

    • Master branch holds the core code and will maintain it own release and review cycle.
    • 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.

    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


    Sidecar / Custom modules:

    • 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

    Image Removed

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



    • The repository hosts sidecar modules 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.

    Libraries: 

    • mdms-client
    • tracer
    • services-common


    • 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.
    • The repository hosts common libraries which are used across core and business modules.
    • The modules hosted in the repo are usually built and artifacts published to Nexus / Artifactory which are then re-used by other modules.
    • Artifacts release and versioning strategies to be followed strictly. 


    • 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
    MDMS 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: (Private)

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

    InfraOps: (Private)

    • 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.
    • Each state or individual deployment config is handled by a single file 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

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


    Web: (Common)

    • citizen
    • employee
    • employee-tradelicence
    • ui-uploader
    • report
    https://levelup.gitconnected.com/using-pre-commit-and-pre-push-git-hooks-in-a-react-project-6c83431ef2bd

    Mob: (Android)

    • PuraSeva, AP Municipal
    • PGR, mSeva

    Config-Files: (Private)

    • Seed files
    • migration files ++ ap 
    • Persister
    • Indexer
    • zuul filters-config
    • nginx -config
    • kibana-config

    Infra-ops

    • JenkinsFiles ++ ap 
    • Dockerfiles ++ ap 

    Separate

    • MDMS, MDMS client 
    • Custom state level 

    Infra-services: (private)

    • zuul
    • nginx 
    • es
    • kibana

    Image Removed

    Action items







    Action items

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

    Outcome

    ...