ReleasePublish

Release creation process

  1. Create a new branch for the release, e.g. release-x.x.x from the master branch.

  2. Change the monorepo version npm run pre-publish x.x.x. It will change the version in all package.json and generate a Changelog file with all commits' names since the last release. (See the script here)

  3. Pick relevant commit message in ./docs/static/ChangelogDiff.txt to put them in ./docs/static/Changelog.md (Reformulate if necessary). Arrange commits in theses sections:

    # vx.x.x
    
    ## @ud-viz
        - Examples:
        - Doc:
        - CI:
    
    
    ## @ud-viz/frame3d
    
    ## @ud-viz/game_browser
    
    ....
    
    
  4. Run npm run architecture. Generate the architecture with js script.

  5. Follow the prior PR submission

  6. Push your branch to the main repository (This branch will be used to create the release tag)

  7. Create a PR

  8. Assign yourself to the PR

  9. Have a reviewer approve your PR

  10. Create a Github release (through the GUI):

    • Copy the new content given in Changelog.md: this duplication doesn't seem to be DRY but the Release comments are hosted by github (and will be lost if you migrate to e.g. gitlab) and are not browsable offline.
      • You might consider using the "Auto-generate release notes" feature
      • Note that creating a Github release creates an underlying git tag (which can previously be created with a git tag)

Publish the package

To publish the package to npmjs package repository

  1. Authenticate on npmjs with npm login and use the vcity account together with proper credentials. Note:
    • Ask username and password to login at an admin
    • Because the npmjs authentication mode of the vcityaccount is currently configured to One-Time-Password (OTP) over email you will need to be part of the vcity@liris.cnrs.fr email alias forwarder to receive the OTP and be patient about it (the reception delay can be up to a couple minutes).
  2. npm publish --workspaces --access public (workspaces option refer to the workspaces field in the package.json).