release doc tweaks Project: http://git-wip-us.apache.org/repos/asf/incubator-edgent/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-edgent/commit/72281bcd Tree: http://git-wip-us.apache.org/repos/asf/incubator-edgent/tree/72281bcd Diff: http://git-wip-us.apache.org/repos/asf/incubator-edgent/diff/72281bcd
Branch: refs/heads/develop Commit: 72281bcd96f4fc6243abedbed0a8509fd29de5f1 Parents: 80af796 Author: Dale LaBossiere <dlab...@us.ibm.com> Authored: Tue Feb 20 15:06:59 2018 -0500 Committer: Dale LaBossiere <dlab...@us.ibm.com> Committed: Tue Feb 20 15:06:59 2018 -0500 ---------------------------------------------------------------------- DEVELOPMENT.md | 3 +++ buildTools/check_jars.sh | 4 ++++ src/site/asciidoc/releasing.adoc | 29 +++++++++++++++-------------- 3 files changed, 22 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/72281bcd/DEVELOPMENT.md ---------------------------------------------------------------------- diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 85a9405..e7b71f8 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -467,6 +467,9 @@ information may help to better understand it. configuration file noted above. * src/assembly/distribution.xml - additional configuration info * src/main/resources/README - source of the file in the bundle +* `utils/edgent-deployment-filter-maven-plugin` - a plugin for eliminating + the publishing of test related jars during a release. See EDGENT-440. + The plugin is built and released separately. ## Testing the Kafka Connector http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/72281bcd/buildTools/check_jars.sh ---------------------------------------------------------------------- diff --git a/buildTools/check_jars.sh b/buildTools/check_jars.sh index 88aac9f..884bb39 100755 --- a/buildTools/check_jars.sh +++ b/buildTools/check_jars.sh @@ -222,6 +222,10 @@ function checkJars() { # $1 EXP-JARS $2 ACTUAL-JAR-PATHS EC=0 +echo "##### Checking jar meta-data (LICENSE,NOTICE,DISCLAIMER,DEPENDENCIES)" +echo "##### and correct jars are present (extra jars: ~TODO)" +echo + if [ "" != "$(echo $CHECK_CFG | grep j8)" ] ; then echo echo "##### Checking J8 jars ..." http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/72281bcd/src/site/asciidoc/releasing.adoc ---------------------------------------------------------------------- diff --git a/src/site/asciidoc/releasing.adoc b/src/site/asciidoc/releasing.adoc index 95852b6..efa0a75 100644 --- a/src/site/asciidoc/releasing.adoc +++ b/src/site/asciidoc/releasing.adoc @@ -59,13 +59,15 @@ A `release/major.minor` branch is created from the `develop` branch (e.g. `relea When the release branch is believed to be ready, the branch is "prepared" for released: the poms Edgent version are changed to a non-snapshot version (e.g., `1.2.0-SNAPSHOT` => `1.2.0`), the branch is tagged (e.g., `edgent-1.2.0`), and then the poms are set to the next bugfix release version (e.g., `1.2.1-SNAPSHOT`). -The release candidate is built, tested and staged to Nexus and the ASF source release staging repository. After a successful vote, the staged release candidate artifacts are published. +The release candidate is built from the tag, tested and staged to Nexus and the ASF source release staging repository. After a successful vote, the staged release candidate artifacts are published. Ultimately, the release tag's (e.g., `edgent-1.2.0`) commit must be merged to `master`. Should changes be added to the release branch to stabilize/fix it, the commits need to be propagated to `develop` using a cherry-pick-merge. The release branch / release tag is NOT merged to `develop`. The release branch is maintained after the release. Should a bug-fix release be required, work for the bug-fix release can be done on the release branch or in feature branches that are merged to the release branch after they are finished. A separate bug-fix branch is NOT created. Bug fix commits need to be propagated to `develop` using a cherry-pick-merge. -The release branch poms progress as bug-fix versions are prepared: `maj.min.1-SNAPSHOT`, `maj.min.1`, `maj.min.2-SNAPSHOT`, ... Individual fixes for the bug-fix release will typically need to be propagated to `develop` using cherry-pick-merge. If a bug-fix is needed for anything earlier than the most recent `major.minor` release, the fix will need to be cascaded all the way up to the most recent release branch and then propagated to `develop`. The release branch is NOT merged to `develop`. A bug-fix release MAY ONLY be merged to `master` if the bug-fix release's predecessor is the latest release on `master`. +The release branch poms progress as bug-fix versions are prepared: `maj.min.1-SNAPSHOT`, `maj.min.1`, `maj.min.2-SNAPSHOT`, ... Individual fixes for the bug-fix release will typically need to be propagated to `develop` using cherry-pick-merge. If a bug-fix is needed for anything earlier than the most recent `major.minor` release, the fix will need to be cascaded all the way up to the most recent release branch and then propagated to `develop`. The release branch is NOT merged to `develop`. + +Merging a bug-fix release to `master` is a bad idea except for a project with a very constrained and sequential release progression, i.e., only ever supporting and bug-fixing the most recent release. Otherwise the `master` branch can/will contain only *some* bugfix releases. That will cause confusion - more than the confusion of master not containing bugfix releases? ugh. A bug-fix release MAY ONLY be merged to `master` if the bug-fix release's predecessor is the latest release on `master`. NOTE: In the following steps, adjust the versions and tags as appropriate for the release. @@ -109,19 +111,19 @@ Notes: In this phase on the release branch, the poms Edgent versions are changed to the specified release version, a full build with all tests is run, and a commit is done with this state and tagged. After that the release branch poms Edgent versions are set to the first/next specified `major.minor.bugfix-SNAPSHOT` bugfix development version and this update is committed. The commits are automatically pushed. +WARNING: at this moment the new edgent-deployment-filter-maven-plugin (EDGENT-440) is not yet released and the release:prepare below will fail with `There are still some remaining snapshot dependencies.` To work around that for the moment, add `-DignoreSnapshots` to the `mvn release:prepare` below. I'm not sure but prior to doing the prepare you may need to build the plugin and install it in your maven cache (`cd utils/edgent-deployment-filter-maven-plugin; mvn install`). + Prepare the release branch: git checkout release/1.2 # the branch from "Creating the Release Branch" - # Hmm... does -DskipTests work with the following? Tests take a long - # time and normally one will go through it again in the Perform step. - mvn release:prepare -DreleaseVersion=1.2.0 -Dtag=edgent-1.2.0 -DdevelopmentVersion=1.2.1-SNAPSHOT -DautoVersionSubmodules=true -P platform-android,platform-java7,distribution git status # should report nothing ahead/behind. Do 'git push' if needed. -If you need to restart because of error or the process is cancelled, then run the -`release:prepare` again to pick up where it left off. +Now would be a good time to update the "[DISCUSS]" thread with the branch and tag info if you so choose. + +If you need to restart because of error or the process is cancelled, then run the `release:prepare` again to pick up where it left off. Or to restart the `prepare` from the beginning: @@ -135,16 +137,15 @@ It's best to run check_jars.sh prior to creating (and staging) the Release Candidate. buildTools/check_jars.sh --findmode build-release 1.2.0 . - + If there are any problems raise the issues on the "[DISCUSS]" thread. If the decision is to make changes now, address them, remove the release tag and redo the Prepare. - Remove the release tag: - + # To Remove the release tag for a redo git push --delete origin <tag> # delete the remote tag git tag --delete <tag> # delete the local tag -== Create and Stage the Release Candidate +== Create and Stage the Maven Release Candidate In this phase on the previously prepared release branch, the release candidate is built, tested and staged to the remote Maven (Nexus) repository configured in the pom. @@ -165,7 +166,7 @@ After this step is successful, a Nexus staging repository named `orgapacheedgent === Unwanted Staged Artifacts -The `release:perform` stages numerous undesired artifacts. See EDGENT-440. +The `release:perform` stages some undesired artifacts. See EDGENT-440. TODO: what's needed to manually delete these? "Delete" each via the UI? What about the state of the metadata artifacts, do they reference those deleted items? @@ -266,7 +267,7 @@ Here's what you'll need to delete/undo: * remove the release branch locally and remotely * backup the head of the develop branch to undo the `release:branch` commits -Remove the release branch locally and remotely (be sure :-) +To Remove the release branch locally and remotely (be sure :-) # CAUTION: make sure you're deleting an unwanted release branch! git checkout develop @@ -281,7 +282,7 @@ The two `release:branch` created commits have the comments: * `[maven-release-plugin] prepare for the next development iteration` * `[maven-release-plugin] prepare branch release/<major>.<minor>` -Backup the head of the develop branch two commits +To Backup the head of the develop branch two commits git checkout develop git pull # ensure up to date