This document describes processes needed by admins of this repository.
Publishing speedscope is a multi-step process:
- Test the release
- Prepare the release
- Publish to npm
- Deploy the website
- Upload a release to GitHub
At time of writing, deployment assumes you're running macOS. It probably works if you're on a linux, and almost definitely does not work on Windows.
Speedscope is tested in CI, so all the automated tests should be passing. We'll just be doing a few sanity checks to make sure the build & deployment machinery is working correctly.
Run scripts/prepare-test-installation.sh
. This will do a mock publish &
installation to ensure that the version we're about to publish is going to
work. At the end of this command, it should echo a cd
command to run in your shell
to switch to the installation directory. Something like this:
Run the following command to switch into the test directory
cd /var/folders/l0/qtd9z14973s2tw81vmzwkyp00000gp/T/speedscope-test-installation.9Ssdd2PZ/package
Run this command, to switch to the test directory.
Inside of here, run bin/cli.js
. This should open a copy of speedscope in browser.
Try importing a profile from disk via the browse button and make sure it works.
Next, try running bin/cli.js dist/release/perf-vertx*
. This should immediately open
speedscope in browser, and the perf-vertx file should load immediately.
If everything looks good, proceed to "Prepare the release".
- Update the version manually in package.json (we intentionally don't use the
npm version
command) - Update CHANGELOG.md to indicate the changes that were made as part of this release
- Commit the changes with the version name as the commit message, e.g.
git commit -m 0.6.0
git tag
the release. We use tags likev0.6.0
, e.g.git tag v0.6.0
git push && git push --tags
Assuming everything went well in the previous two phases, publishing should just be
a matter of running npm publish
.
To verify that the publish was successful, run npm install -g speedscope
.
Try speedscope
, which should open speedscope in browser.
Try speedscope sample/profiles/stackcollapse/simple.txt
, which should immediately load the profile.
This step must follow the "Publish to npm" step, since it uses assets from the npm publish.
https://www.speedscope.app/ is hosted on GitHub pages, and is published via pushing
to the gh-pages
branch. The gh-pages
branch has totally different contents than
other branches of this repository: https://github.com/jlfwong/speedscope/tree/gh-pages.
It's populated by a deploy script which is invoked by running npm run deploy
script. This populate a directory with assets pulled from npm, and
boot a local server for you to test the compiled assets. Please do not skip
the manual testing in this step.
If everything looks good, you should be able to hit Ctrl+C, and you should see this prompt:
Commit release? [yes/no]:
If everything looks good, type yes
then enter. This will commit to the gh-pages
branch, and the site should automatically deploy shortly after.
To check if a deploy has happened, you can check https://www.speedscope.app/release.txt which includes the version, the date, and the commit of the deploy.
This step must follow the "Publish to npm" step, since it uses assets from the npm publish.
To make a zipfile suitable for uploading to GitHub as a release, run scripts/prepare-zip-file.sh
.
Once that's done, you should have a zip file in dist/release/
Upload that file along with changelog notes to https://github.com/jlfwong/speedscope/releases/new