pattern-library icon indicating copy to clipboard operation
pattern-library copied to clipboard

Improve the release script

Open markus-walther opened this issue 1 year ago • 2 comments

Currently, npm run release runs into a number of stumbling blocks, as follows:

  1. Commands lerna and cross-env apparently need to be globally installed to be found by the script. This should not be necessary, and currently leads to silent failure of the release process.
  2. As it stands, it is not possible to enter the required 6-digit OTP token to satisfy npm two-factor authentication in the lerna publish sub-step.
  3. Releasing is restricted to the release branch, but no upfront check to determine such branch exists both locally and remotely is performed, with informative error messages on what to do and why this restriction is in-place.
  4. In case a release is botched for whatever reason, a subsequent attempt may fail due to the git tags issued by the lerna version sub-step already existing. The release script should force these git tags even if they exist, to facilitate robust re-releasing in the face of failures.
  5. The use of prepublishOnly and postpublish scripts in each Pattern-Library component's package.json is very brittle and has repeatedly led to failure, because these scripts edit the package.json file on disk but are not done transactionally, i.e. it is not the case that either both or none of these scripts are guaranteed to be executed. A better release process must not edit package.jsons.

Make the release script robust by removing the above stumbling blocks.

markus-walther avatar Mar 06 '23 15:03 markus-walther

See https://github.com/lerna/lerna/tree/main/libs/commands/publish#--otp for ways of submitting an OTP token to lerna.

markus-walther avatar Mar 06 '23 15:03 markus-walther

See https://github.com/lerna/lerna/tree/main/libs/commands/version#--force-git-tag for ways to force git tags.

markus-walther avatar Mar 06 '23 15:03 markus-walther