Skip to content

automate project release process #42

@dherman

Description

@dherman

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions