Skip to content

Release Guide

Sean Lilley edited this page Jul 16, 2021 · 104 revisions

We release Cesium on the first work day of every month.

There is no release manager; instead, our community shares the responsibility. Any committer can create the release for a given month, and at any point, they can pass the responsibility to someone else, or someone else can ask for it. This spreads knowledge, avoids stratification, avoids a single point of failure, and is beautifully unstructured (more info).

Follow these instructions exactly. Do not switch branches or otherwise manipulate your local clone at any point in the process unless instructed to do so. If you need to switch branches for whatever reason, you must start the entire process over again.

Release testing and packaging

  1. Verify there are no priority - next release issues or priority - next release pull requests.
  2. Verify there are no remove in [this version number] issues. Delete the label. Create a new label with the next highest remove in [version] relative to the existing labels.
  3. Make sure you are using the latest drivers for your video card.
  4. Pull down the latest main branch.
  5. Update the Cesium ion demo token in Ion.js with a new token from the CesiumJS ion account. Revoke the token from 2 releases ago.
  6. Proofread CHANGES.md with the date of the release. Adjust the order of changes so that prominent/popular changes come first.
  7. Update the version in package.json to match, e.g. 1.14.0 -> 1.15.0.
  8. Commit these changes.
  9. Make sure the repository is clean git clean -d -x -f. This will delete all files not already in the repository.
  10. Run npm install.
  11. Create the release zip npm run makeZipFile
  12. Unpack the release zip to the directory of your choice and start the server by running npm install and then npm start
  13. Browse to http://localhost:8080 and confirm that the home page loads as expected and all links work. Note that Sandcastle and "Run Tests" will not work in Edge (pre-Chromium version) or Internet Explorer 11.
  14. Verify that the documentation built correctly
  15. Make sure Hello World loads.
  16. Make sure Cesium Viewer loads.
  17. Run unit tests in all browsers.
  18. Run Sandcastle on the browser of your choice (or multiple browsers if you are up for it). Switch to the All tab and run through every demo to make sure they all work. Actually play with each of the buttons and sliders on each demo to ensure everything works as expected.
  19. If any of the above steps fail, post a message to the #engineering channel in slack to figure out what needs to be fixed before we can release. Do NOT proceed to the next step until issues are resolved.
  20. Push your commits to main
    • git push
  21. Create and push a tag, e.g.,
    • git tag -a 1.1 -m "1.1 release"
    • git push origin 1.1 (this assumes origin is the primary cesium repository, do not use git push --tags as it pushes all tags from all remotes you have on your system.)
  22. Publish the release zip file to GitHub
  23. Publish to npm by running npm publish in the repository root (not the unzipped file directory) (the first time you do this, you will need to authorize the machine using npm adduser)
  24. Check out the cesium.com branch
    • Merge the new release tag into the cesium.com branch
    • Set the cesiumWebsiteToken variable in Ion.js in the cesium.com branch of CesiumJS with a token from the CesiumJS ion account called something like cesium.com April - Delete May 1
    • Commit and push those changes to the cesium.com branch. This deploys the hosted release, Sandcastle, and the updated doc.
  25. After the cesium.com branch builds, comment in the #comms-chat slack channel to notify comms that the release is done so they can add these highlights and publish the monthly blog post
  26. Update the version of CesiumJS used in the Cesium Workshop: https://github.com/CesiumGS/cesium-workshop/blob/main/index.html#L13-L14
  27. Continue to the Cesium Analytics release