-
Notifications
You must be signed in to change notification settings - Fork 1
Workflows
-
Fork this repository to your desired GitHub account.
-
Make a new feature branch from the
develop branchon your forked repository. -
Create a "Draft" pull request for the new feature branch to hipas/gridlabd
develop. Assign the pull request to yourself, set the tags, and project. -
When the work is complete and the pull request validation on CircleCI and Docker returns true, set the pull request to "Ready for Review" and assign a reviewer.
-
When the review is approved, merge the pull request to develop using a "Squash" merge.
The release procedure of HiPAS GridLAB-D is as follows:
- Stage
developbranch in preparation for the merge intomaster(OUTDATED).
-
Merge
masterintodevelopbranch using a normal merge. -
Change the base image
latesttag in.circleci/config.ymlto the current tag number. -
List code changes (ie all PRs that are part of this release)
-
List current unresolved issues, if any.
- Validate the
developbranch on local system, CircleCI and DockerHub.
-
Build, install, and validate the
developbranch on the local system. -
Build and validate the Docker image of the
developbranch on the local system. -
All issues noted must be resolved before moving to Step 3.
-
Merge
developintomasterusing a "Rebase" merge. -
Ensure that DockerHub was able to build the image based on latest commit:
slacgismo/gridlabd:latest -
Pull the latest
slacgismo/gridlabdimage and tag it with the next release name and number on the Docker images page. If the changes are minor, the next image number should be used. The next image name should use if the changes are major. Major changes include:
-
Removal of deprecated functionality.
-
Changes in functionality that are not forward compatible from the previous release. "Compatibility" refers to whether the simulation runs with the same inputs, but not whether the simulation produces the same results.
- Update the release images
-
Push the image to DockerHub and update [Docker images]] page.
-
Generate the new AWS image.
- Create a new
developbranch frommaster.
-
Change the
.circleci/config.ymlto refer to the latest base image. -
Update the patch number in
gldcore/version.h -
Create the pull request to stage the merge from
developtomaster. -
Merge the new
developupdate to all the workingdevelop-*branches.
- Merge the new
masterinto the existingminorandmajorworkflows
- Merge the updated
minorandmajorbranches into the respectedminor-*andmajor-*branches.
- Draft the tag/release with the update to master using the version number (e.g., X.Y.Z) and release name (e.g., Name-Z). Don't forget to copy the PR "Code" and "Documentation" change list into the release description.
-
By convention any branch that is not named
master*ordevelop*is not considered part of the managed workflows for HiPAS GridLAB-D. Developers are recommended to name their private sandbox branches using the conventionusername/<branch-name>. -
Team sandboxes can be named similarly by using a team, project, and other conceptual grouping, e.g.,
use-case/<scenario-name>. -
A sandbox workflow may be turned into a development workflow by creating a new development branch from
developand "Squash" merging the sandbox branch into the new branch. After this is completed the sandbox branch is deleted and theDevelopment Workflowis followed.
There are three types of merges used in HiPAS Workflows. Use of the correct merge is vital to preserving the integrity of the commit history as desired by the development team.
- Normal merge - This is used to merge
master -> develop
-
Keeps all commits history of the feature branch and move them into the master branch
-
Adds an extra dummy commit to the master branch
- Rebase merge - This is used to merge
develop -> master
- Appends all commits history of the feature branch in the front of the master branch
- Squash merge - This is used to merge
develop-*todevelop
- Groups all feature branch commits into one commit which it adds as a dummy commit to the front of the master branch