deephaven / deephaven-core

Deephaven Community Core
Other
256 stars 80 forks source link

Barrage release process #951

Open niloc132 opened 3 years ago

niloc132 commented 3 years ago

The current release process is mvn release:prepare, mvn release:perform, and this doesn't work well with our github merge strategy.

Proposed workflow could work something like this:

Without the release plugin, we would make a maven profile to run gpg, javadoc, and source tasks.

For maven, we can go a step further and skip producing a commit with the tag in it as part of main-line history. The idea here is that it isn't productive to consider any more than one single chain of history, so HEAD-SNAPSHOT is always the current HEAD in git, deployed and ready for testing, and at any time we can begin the release process above. New PRs can be merged while the release process continues, and a tag can be pushed after-the-fact to mark a commit as a stable release.

This might help npm releases too? I'm not sure if an npm release requires or assumes that it can push a commit with a change (or even the tag), but we can let npm guide the release and have maven follow when ready.

(Marked as aug 2021 as we should have a plan by then.)

cc @nbauernfeind @mofojed

mofojed commented 2 years ago

For reference, the web-client-ui npm release process is listed here: https://github.com/deephaven/web-client-ui/#releasing-a-new-version

Essentially:

Not sure if we want this same level of automation for the deephaven barrage publish.

nbauernfeind commented 3 days ago

These were the steps I took to release v0.7.0:

cd javascript
npm version v0.7.0
git commit -a -m "Update NPM release to v0.7.0"
cd ../java
GPG_TTY=$(tty) mvn release:prepare
git push upstream v0.7.0
mvn release:perform
cd ../javascript
npm version v0.7.1-snapshot.0
git commit -a -m "Update NPM release to v0.7.1-snapshot.0"

Then I put up a PR, and merged w/a merge commit (do not rebase or squash as this makes the release tag less happy).

We attempted to publish via npm:

cd javascript
npm publish

However, there were recent changes in flatc that our js build is not yet prepared for. We're punting on the v0.7.0 npm release; we need to change up generateSchemas.sh and likely the index.ts since flatc can generate appropriate typescript now.