From 50a2f2114f04fe47937f403efba60417ab462f93 Mon Sep 17 00:00:00 2001 From: Jason Dahlke Date: Fri, 28 Jul 2023 18:52:51 +0000 Subject: [PATCH 1/4] add RELEASING.md document --- RELEASING.md | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 RELEASING.md diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 0000000000..f03e424f5c --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,101 @@ +# Emissary Releasing Workflow + +Table of Contents +================= + +* [Introduction](#introduction) +* [Versioning](#versioning) +* [Release Types](#release-types) +* [Publishing a Release](#publishing-a-release) + +## Introduction + +Release process uses GitHub actions and involves: +- Creating a release branch to perform the following actions: + - Dry run a maven release + - Remove SNAPSHOT from the version and create scm tag + - Create a GitHub release and upload artifacts +- If patch release, delete the patch branch +- For a formal release only, increment snapshot version on master branch +- Publish the artifacts to GitHub Maven Repo + +The release process used for this repository creates a branch for every release that is prefixed with `release/`. Tags are not added nor are releases performed on the `master` branch. The `master` branch is the target for merging new commits and for development releases (-SNAPSHOT) only. All patches will originate using a `patch/` prefixed branch and once complete a new `release/` branch will be created. + +## Versioning + +While not strictly enforced, versioning generally follows the [Semantic Versioning](https://semver.org/) Guide. + +## Release Types + +### Formal Release + +Formal release for the project and is intended to be stable. + +``` +Action: `Maven: Release` +Options: +- From: `Branch: master` +- Type: `Release` +- Suffix: Leave blank +``` +Creates a branch called `release/` and performs release. One commit is added to `master` only to increment to the next snapshot version. + + +### Patch Release + +Releases may have bugs or vulnerabilities with a high enough severity that requires a patch release to fix. + +#### Create Patch Branch + +Creating a patch branch can be done manually or using the GitHub action. The action was added as a convenience, and is not required as part +of the workflow. + +Note: When manually creating a patch branch, the name must start with `patch/` and must be based on a release branch, i.e. `release/`. +``` +Action: `Create a Patch Branch` +Options: +- From: `Branch: release/` +``` +Convenience action to simply create a branch called `patch/`. The action must be run from a release branch, i.e. `release/`. + +#### Release Patch + +Patch release for the project that intended to fix one or more bugs/vulnerabilities for a release. Patches are not intended for new functionality +unless it is directly supporting a bugfix/hotfix. + +``` +Action: `Maven: Release` +Options: +- From: `Branch: patch/` +- Type: `Patch` +- Suffix: Leave blank +``` +Releases patch fixes from a branch called `patch/`, i.e. `patch/8.0.x`. A release branch called `release/` is created +and the release is performed. When finished, the patch branch is deleted. No commits are made to `master`. + +### Iterative Release (Milestone) + +Iterative releases are not guaranteed to be stable, like snapshots, but allow for markers in the development stage and allow for testing and +feedback before a formal release. Currently, we support milestone releasing but the functionality can easily be extended to create other iterative +release types, e.g. alpha, beta, release candidates. + +``` +Action: `Maven: Release` +Options: +- From: `Branch: master` +- Type: `Milestone` +- Suffix: `-M1` <- this is just an example it can be anything, e.g. `M1` OR `-MILESTONE1` +``` + +Creates a branch called `release/`, i.e. `release/8.0.0-M1`, and performs release. No commits are added to `master`. + +## Publishing a Release + +Publishing a release makes the artifacts available to other projects/teams. Artifacts are pushed to +[GitHub maven repository](https://github.com/orgs/NationalSecurityAgency/packages?repo_name=emissary). +``` +Action: `Maven: Publish Packages to GitHub` +Options to use: +- From: `Branch: release/` +``` +Pushes release artifacts to a repo using `maven deploy`. From 5ecf45449c21a76a2c39d2ab1a0f334a3c658b83 Mon Sep 17 00:00:00 2001 From: jpdahlke Date: Wed, 2 Aug 2023 11:37:13 -0400 Subject: [PATCH 2/4] Update RELEASING.md Co-authored-by: drivenflywheel --- RELEASING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASING.md b/RELEASING.md index f03e424f5c..75ca57b660 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -13,7 +13,7 @@ Table of Contents Release process uses GitHub actions and involves: - Creating a release branch to perform the following actions: - Dry run a maven release - - Remove SNAPSHOT from the version and create scm tag + - Remove the "-SNAPSHOT" suffix from the version and create scm tag - Create a GitHub release and upload artifacts - If patch release, delete the patch branch - For a formal release only, increment snapshot version on master branch From 555fa9388d0224c699d4496ad16e6e3e6977dd6e Mon Sep 17 00:00:00 2001 From: jpdahlke Date: Wed, 2 Aug 2023 11:38:18 -0400 Subject: [PATCH 3/4] Update RELEASING.md Co-authored-by: drivenflywheel --- RELEASING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASING.md b/RELEASING.md index 75ca57b660..8594e2c3ea 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -75,7 +75,7 @@ and the release is performed. When finished, the patch branch is deleted. No com ### Iterative Release (Milestone) -Iterative releases are not guaranteed to be stable, like snapshots, but allow for markers in the development stage and allow for testing and +Like snapshots, iterative releases are not guaranteed to be stable, but allow for markers in the development stage and allow for testing and feedback before a formal release. Currently, we support milestone releasing but the functionality can easily be extended to create other iterative release types, e.g. alpha, beta, release candidates. From afad726efb5d291aa810a1dd14e1696346d661cc Mon Sep 17 00:00:00 2001 From: jpdahlke Date: Wed, 2 Aug 2023 11:39:37 -0400 Subject: [PATCH 4/4] Update RELEASING.md Co-authored-by: drivenflywheel --- RELEASING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASING.md b/RELEASING.md index 8594e2c3ea..b1dc9f24f8 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -43,7 +43,7 @@ Creates a branch called `release/` and performs release. One commit is ### Patch Release -Releases may have bugs or vulnerabilities with a high enough severity that requires a patch release to fix. +Releases may have bugs or vulnerabilities with a high enough severity that requires a patch release to fix. Patch releases can only be performed from a patch branch (described below). #### Create Patch Branch