Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

automate project release process #42

Closed
dherman opened this issue Jan 9, 2016 · 4 comments
Closed

automate project release process #42

dherman opened this issue Jan 9, 2016 · 4 comments

Comments

@dherman
Copy link
Collaborator

dherman commented Jan 9, 2016

Pushing an update to crates.io requires the following manual steps:

Update release notes

  • Update the release notes in RELEASES.md.
  • Update the authors list in AUTHORS.md to include any names of new contributors.

Update neon manifest versions and test

  • Bump the patch version number in neon, neon-build, and neon-runtime crates (they are kept in lock-step at always the exact same major.minor.patch).
  • Bump the Cargo.toml dependency on neon-runtime to the exact patch-level version of neon-runtime.
  • Run cargo update in test/dynamic/native.
  • Run cargo clean && cargo update in test/static.
  • Run cargo test in the neon root directory and ensure the tests are green.

Update neon-cli manifest versions and test

  • Bump the cli/templates/Cargo.toml.hbs dependencies on neon-build and neon to the exact patch-level version of neon.
  • Bump the cli/package.json to the exact patch-level version of neon.
  • Run a smoke test of neon new:
    • Run neon new smoke-test in a temp directory.
    • Update the neon dependency to { path = "<path/to/neon>" }
    • Update the neon-build build-dependency to { path = "<path/to/neon>/crates/neon-build" }
    • Change the neon-cli dependency in smoke-test/package.json to <path/to/neon>/cli
    • Run npm i and node -e 'require(".")' and see if it prints "hello node".
  • Delete the temporary project.

Commit and push to GitHub

  • Commit with a commit message of v$major.$minor.$patch.
  • Push the commit to GH.

Publish

  • Go into cli and run npm publish.
  • Go into crates/neon-build and run cargo publish. (Must be done before publishing neon).
  • Go into crates/neon-runtime and run cargo publish. (Must be done before publishing neon (next step)).
  • Go into the root directory and run cargo publish.

Tag release branches

  • Go to the GitHub repo and click "Releases" and then "Draft a new release" and give it a tag of $major.$minor.$patch and a release title of v$major.$minor.$patch, and check the "This is a pre-release" checkbox and press "Publish release."

I would like to automate as much of this as possible!

/cc @mmun

@dherman
Copy link
Collaborator Author

dherman commented Nov 17, 2017

The "smoke test" portion of this process might be better dealt with using a vargo new --neon abstraction as I sketched quickly in neon-bindings/rfcs#8.

@dherman
Copy link
Collaborator Author

dherman commented Mar 17, 2018

Note to self: investigate using cargo-release for this.

dherman added a commit that referenced this issue Jun 11, 2018
First attempt at some automation for the release process. (See #42.)
@dherman dherman changed the title automate our project release process Test the release automation Jun 11, 2018
@dherman dherman changed the title Test the release automation automate project release process Jun 11, 2018
@dherman
Copy link
Collaborator Author

dherman commented Jun 11, 2018

Even though it's not tested, I'm gonna close this issue and call it implemented for now (since #318). I'll open new issues for testing it out with the next release, and for automating it further.

@dherman dherman closed this as completed Jun 11, 2018
@dherman
Copy link
Collaborator Author

dherman commented Jun 11, 2018

PS For posterity, the simplified/semi-automated process is now documented on the Release checklist wiki page.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants