Repo Structure | Branching Strategy | Review 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
|
- 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.
| There should be a codeowners who maintains master branchState teams also have designated codeowners including the
| - 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) | Image Removed |