-
Notifications
You must be signed in to change notification settings - Fork 3.5k
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.
- Verify there are no priority - next release issues or priority - next release pull requests.
- Verify there are no
remove in [this version number]
issues. Delete the label. Create a new label with the next highestremove in [version]
relative to the existing labels. - Make sure you are using the latest drivers for your video card.
- Pull down the latest main branch.
- 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.
- Proofread CHANGES.md with the date of the release. Adjust the order of changes so that prominent/popular changes come first.
- Update the version in
package.json
to match, e.g.1.14.0
->1.15.0
. - Commit these changes.
- Make sure the repository is clean
git clean -d -x -f
. This will delete all files not already in the repository. - Run
npm install
. - Create the release zip
npm run makeZipFile
- Unpack the release zip to the directory of your choice and start the server by running
npm install
and thennpm start
- 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.
- Verify that the documentation built correctly
- Make sure Hello World loads.
- Make sure Cesium Viewer loads.
- Run unit tests in all browsers.
- 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. - 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. - Push your commits to main
git push
- 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 usegit push --tags
as it pushes all tags from all remotes you have on your system.)
- Publish the release zip file to GitHub
- https://github.com/CesiumGS/cesium/releases/new
- Select the tag you use pushed
- Enter 'CesiumJS 1.xx' for the title
- Include date, list of highlights and link to CHANGES.md (https://github.com/CesiumGS/cesium/blob/1.xx/CHANGES.md) as the description
- Look at a previous release for an example. Don't use emoji, headings, or other formatting
- Attach the
Cesium-1.xx
release zip file - Publish the release
- 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 usingnpm adduser
) - Check out the
cesium.com
branch- Merge the new release tag into the
cesium.com
branch - Set the
cesiumWebsiteToken
variable inIon.js
in thecesium.com
branch of CesiumJS with a token from the CesiumJS ion account called something likecesium.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.
- Merge the new release tag into the
- 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 - Update the version of CesiumJS used in the Cesium Workshop: https://github.com/CesiumGS/cesium-workshop/blob/main/index.html#L13-L14
- Continue to the Cesium Analytics release