Skip to content

Latest commit

 

History

History
32 lines (24 loc) · 3.2 KB

File metadata and controls

32 lines (24 loc) · 3.2 KB

Steps to cut a new release of the TimelineJS JavaScript library

The primary action for "releasing" TimelineJS is pushing a new version to cdn.knightlab.com but as of mid-2020, we also publish new versions to the npmjs package registry.

  1. Before cutting a release, test thoroughly. Is this an opportunity to add new unit tests? Develop functional testing? If nothing else, npm run compare provides a way to see how some historical timelines would function with the new code. (Note that because of Google Sheets API changes, compare now compares back to the oldest release in the 3.8.x series instead of the pre-webpack version)
  2. Update CHANGELOG to indicate the release date under the "not yet released" version header. Hopefully you've been incrementally updating the file with relevant changes so that this is just editing the version "header". Commit this change (npm version refuses to run unless the working directory, including the index, is fully clean, so this can't just be staged).
  3. Run npm version <newversion> (e.g. npm version 3.9.13, or npm version major/minor/patch). This bumps package.json and package-lock.json, commits that bump, and creates a matching git tag. The repo's .npmrc configures npm version to tag as 3.9.13 rather than the npm default v3.9.13, matching our existing tags.
  4. Push the commit and the tag to GitHub: git push && git push --tags
  5. Execute npm run stage_latest, which creates both a versioned edition of the library and a copy of it in the /latest/ directory of the CDN repository. (stage.js reads the version to stage directly from package.json, so it must already be bumped and tagged by the previous step before you run this.)
  6. Execute npm publish (permissions required)
  7. Change directories to the local copy of the cdn.knightlab.com repository, to which files were copied by the previous step
  8. git add app/libs/timeline3 to add the new version and updated latest to Git
  9. Commit those changes with a message like "TimelineJS 3.x.x"
  10. Push changes to GitHub
  11. (probably) activate the virtual environment which can publish to the CDN
  12. execute fab deploy to copy the new files up to the Knight Lab CDN
  13. In an incognito/private browser, load timeline.knightlab.com and verify that the demo timeline works as expected

Updating Wordpress Plugin

The Wordpress plugin bundles the TimelineJS code, so when a new version of the library is released, a new version of the plugin should also be published. This requires you to have a copy of the plugin Git repository locally in a directory adjacent to your copy of the TimelineJS repo.

  1. In the TimelineJS3 repo, execute fab stage_wp
  2. Change to the TimelineJS-Wordpress-Plugin directory
  3. Update the plugin version in knightlab-timeline.php and readme.txt
  4. Add all changed files to Github and commit them.
  5. Execute ./deploy.sh
  6. When prompted, specify a commit message. If you're just updating the JS, you can say something like "Update to TimelineJS 3.x.x"

Note that releases of the JavaScript library are independent from updates to timeline.knightlab.com, which is deployed using fab deploy:prd in the python environment.