Change Management Plan - department-of-veterans-affairs/abd-vro GitHub Wiki

Branching Strategy

This strategy is taken and modified from Microsoft.

  • Use feature branches for all new features and fixes
  • Merge feature branches into the develop branch using pull requests
  • When ready to deploy to production, merge develop into the main branch, conduct QA testing, then deploy when ready.
  • Deploying VRO describes how branches are used for deploying specific versions of the code.
  • See Repository Branch Protection Settings for more configuration settings

Use feature branches for your work

Develop your features and fix bugs in feature branches based off your develop branch. These branches are also known as topic branches. Feature branches isolate work in progress from the completed work in the develop branch. Even small fixes and changes should have their own feature branch.

Creating feature branches for all your changes makes reviewing history simple. Look at the commits made in the branch and look at the pull request that merged the branch.

Review and merge code with pull requests

The review that takes place in a pull request is critical for improving code quality. Only merge branches through pull requests that pass your review process. Avoid merging branches to the develop branch without a pull request.

Pull Request Policy:

  • All pull request reviews will require at least 2 approvals
  • Draft pull requests should be created immediately when work on a branch begins. This is facilitate conversations about in-progress tasks and ensure no work gets forgotten in an orphaned branch.
  • All pull requests will use Squash and Merge

Certain Github Actions are triggered for pull requests to scan the changes to meet security requirements and coding style conventions.

PR Templates

A PR template is a way to automatically populate the body of a PR, to ensure developers fill in useful information for the team to share context and have a historical record of changes.

The PR template is https://github.com/department-of-veterans-affairs/abd-vro/blob/develop/.github/pull_request_template.md.

Release Strategy

Triggering a new release is currently a deliberate decision and is detailed in Deploying VRO. All of the pipeline releases will be created from tags off main. The team decides when to release a new version following best practices. We should encourage following the semver definition of:

  • patch versions including minor updates or changes
  • minor versions including updates and added functionality that is backwards compatible
  • major versions including breaking changes and added functionality

Each release will contain Release Notes specifying bug fixes, breaking changes, and new features.

Deploy to Prod describes details about deploying to releases to production.

Repository Branch Protection Settings

The following branch protection rules should be applied against main and develop:

  • Require a pull request before merging
  • Require Approvals: 2 approvers
  • Require status checks to pass before merging
  • Require branches to be up to date before merging