High-level Overview
Core Development Tools
Version Control
- Tool
-
Bitbucket (Git)
- Usage
-
-
All code is managed through https://coderepo.mobilehealth.va.gov.
-
We follow the Git Feature Branch Workflow branching strategy. See https://wiki.mobilehealth.va.gov/spaces/CKM/pages/227300892/NGSS+Development+SOP for more info.
-
Code reviews are mandatory before merging into the
mainbranch.
-
Build System
- Tool
-
Maven
- Usage
Dependency and Build Frameworks
-
Standardized common Maven configurations are defined to enable streamlined specification of project build requirements.
-
Standardized Maven Tile definitions configure Maven plugins that facilitate common file initialization, build and testing tasks.
Containerization
- Tool
-
Docker, Jib, Buildpacks
- Usage
-
-
All applications are containerized for consistency across environments.
-
Base images follow VA security and orgnaizational standards.
-
Images are stored in environment-specific private registries.
-
Deployment & Configuration Management
Kubernetes Orchestration
- Tool
-
Kubernetes
- Usage
-
-
Applications are deployed as Kubernetes workloads.
-
Standardized Kustomize-based manifests define resource configurations.
-
Application Standards & Best Practices
Coding Conventions
-
Follow Java coding conventions.
-
Use Mobile Framework-based configurations of various plugins to enforce code quality automatically on each build.
Build and Deployment Frameworks
-
Include dependencies and use parent POMs defined in Mobile Framework when possible.
-
Include NGSS Maven Tiles to manage required configurations and supplemental project files.
-
Use the standard Skaffold + Kustomize framework to define image build and Kubernetes deployment configuration.
-
Include the Skaffold Test Library to write integration tests that more fully test orchestration with other services.
Configuration File Generation
- Tool
- Usage
-
-
Filegen is a Maven plugin that generates and maintains standardized configuration files (Jenkinsfile, Kubernetes manifests, Skaffold configs, etc.).
-
Copier templates provide updateable, versioned configurations that can be refreshed as best practices evolve.
-
Use
mvn filegen:copier-init -Dcopier.template=devopsto initialize DevOps configurations from the ngss-devops-template. -
Use
mvn filegen:copier-updateto incorporate template improvements while preserving local customizations via 3-way merge. -
See the Filegen 6.0 Migration Guide for transitioning from static generation to Copier-based workflows.
-
Summary
This document provides an overview of our development architecture, highlighting the tools and conventions we follow. For more detailed information, refer to our internal documentation at https://wiki.mobilehealth.va.gov/spaces/CKM/pages/227300892/NGSS+Development+SOP.