Skip to main content
US Army Corps of EngineersInstitute for Water Resources, Risk Management Center

Release Management

Development vs Production

RMC maintains two main states:

Main Branch

  • Always stable and deployable
  • Represents latest development work
  • Used for testing and staging

Production Releases

  • Tagged commits on main branch
  • Represent specific deployed versions
  • Used when teams need to support multiple versions

Tagging Releases

When deploying to production:

# From main branch
git tag -a v1.2.3 -m "Release version 1.2.3: Description of release"
git push origin v1.2.3

Tag format: v<major>.<minor>.<patch>

  • Example: v1.0.0, v1.2.5, v2.0.0

Hotfixes for Production

When production has a critical bug:

# Branch from the production tag
git checkout v1.2.3
git checkout -b hotfix/critical-security-fix

# Make the fix and commit
git add .
git commit -m "fix: resolve critical security vulnerability"

# Create PR to merge back to main
git push origin hotfix/critical-security-fix

# After PR is approved and merged to main:
# Create new patch version tag
git checkout main
git pull origin main
git tag -a v1.2.4 -m "Hotfix: security vulnerability"
git push origin v1.2.4

Release Notes

For each tagged release, document:

  • New features added
  • Bugs fixed
  • Breaking changes
  • Known issues
  • Upgrade instructions

Store in: CHANGELOG.md in repository root or GitHub Releases