blob: ff77c17e7fd3bc492af0f3fd5fe1cf5f4ff7a1bd [file] [view]
# Processes
Here we document the various release processes and other boring topics.
[TOC]
## Creating a (nightly dev) Release
All new releases first go through the dev version of the extension. This way
we can get early feedback from testers on obvious issues without breaking the
(much larger) stable user base.
https://chrome.google.com/webstore/detail/okddffdblfhhnmhodogpojmfkjmhinfp<br>
https://chrome.google.com/webstore/detail/algkcnfjnajfhgimadimbjhmpaeohhln
### Nightly Build Process
New developer builds are created & signed & uploaded automatically by internal
Google tools from the latest git revisions in the tree.
That means the actual creation & publishing of the CRX archive is not run by
local developers (anymore) as the [CWS] will block unsigned archives.
We no longer announce dev releases since we switched to automated builds.
### Getting the CRX
Googlers use `mpm` to download the CRX files.
This can be helpful for debugging purposes, but isn't necessary otherwise.
Locate the CRX from the [mpm browser].
Drill down into the `app-dev` and `extension-dev` packages.
Find a version id like `1-146602e4_5ab126a6_44d22cda_e4a5aa8c_570775fd`.
It will be different for each package.
With those versions in hand, run something like:
```sh
$ cd ~
$ mpm fetch -v 1-40368fdb_e541d43a_d1d0bd16_daf53a44_69d74102 security/nassh/app-dev app
$ cp app.mpm/versions/*/extension.crx ./app.crx
$ mpm fetch -v 1-2d440ada_27f741e4_ef8b2b81_719b289e_79809584 security/nassh/extension-dev ext
$ cp ext.mpm/versions/*/extension.crx ./ext.crx
$ rm -rf app.mpm ext.mpm
```
Now you'll have the `app.crx` and `ext.crx` archives to upload to the [CWS].
## Preparing a Stable Release
Since the dev release process is less formal now, the flow for preparing a
stable release requires a bit more effort.
### Updating Dependencies
Now would be a good time to go through and do sub-releases of other projects.
e.g. See if hterm or libdot have had any changes.
If so, update their respective ChangeLog files and create a new git tag for each
of them.
If you look at the ChangeLogs and `git tag -l`, it should be obvious how to do
this. If you're still unsure, consult these examples:
* hterm: commit [118578e0fe18c18cea5a5c2da61cc05cd0ce5038] and tag [hterm-1.62]
* libdot: commit [17eba88e555c7e2478c9cac2689af4d2e993e915] and tag [libdot-1.11]
Don't forget to push the tags once you've created them locally!
We don't currently use signed tags.
[118578e0fe18c18cea5a5c2da61cc05cd0ce5038]: https://chromium.googlesource.com/apps/libapps/+/118578e0fe18c18cea5a5c2da61cc05cd0ce5038^!
[17eba88e555c7e2478c9cac2689af4d2e993e915]: https://chromium.googlesource.com/apps/libapps/+/17eba88e555c7e2478c9cac2689af4d2e993e915^!
[hterm-1.62]: https://chromium.googlesource.com/apps/libapps/+/hterm-1.62
[libdot-1.11]: https://chromium.googlesource.com/apps/libapps/+/libdot-1.11
### Source Prepare
Update the [ChangeLog.md](./ChangeLog.md) file with any relevant details since
the last release.
Add any significant changes to release-highlights.yaml, and prune any old
entries in here (see the comments in the file for details).
See commit [e992bb2c819188421b010a7c4fdc96cfae48db31] and tag [nassh-0.9] as
examples, but don't create a tag yet!
The version should remain unchanged in the `manifest.json` & `package.json`
files as we'll update that after we create a git tag.
[e992bb2c819188421b010a7c4fdc96cfae48db31]: https://chromium.googlesource.com/apps/libapps/+/e992bb2c819188421b010a7c4fdc96cfae48db31^!
[nassh-0.9]: https://chromium.googlesource.com/apps/libapps/+/nassh-0.9
### Wait For Dev Release
Once all the release files look OK, we wait for the internal builders to produce
the signed CRX files which we upload again.
Then we do a smoke check to make sure the release works in the dev channel.
If there's a problem, go through the steps above again (landing fixes and
updating ChangeLogs) until the dev CRX is stable.
### Tag the Release
Now that we have a commit we want to actually promote to stable, it's time to
create a git tag and push it to the server.
We don't currently use signed tags.
### Update the manifest.json Versions
Now that we've tagged the release and pushed it out, the version should be
updated in the `manifest.json` & `package.json` files to point to the next one.
See the [nassh-0.34 tag] as an example.
[nassh-0.34 tag]: https://chromium.googlesource.com/apps/libapps/+/refs/tags/nassh-0.34^!
## Promoting a Stable Release
After some time, life will be great and everyone loves the new version.
That means it's time to promote the dev version to stable.
The process basically grabs the stable CRX already created at the same time as
the dev CRX by our infrastructure.
There are only minimal differences between the dev & stable CRX's -- settings
in the `manifest.json` like the version, name, and icon paths.
That's why we can use the dev CRX to validate before taking the stable CRX and
uploading it directly to the [CWS] without explicitly testing it first.
### Get Existing Release
Visit the [mpm browser] again, but this time look at the `app-stable` and
`extension-stable` packages.
Use the same `mpm` flow as the dev step above to pull out the stable CRX's.
### CWS Access
You'll need to be part of the [chrome-secure-shell-publishers group] in order to
manage things via the [CWS].
### Upload the (stable) Release for Googlers
Visit the [CWS] dashboard to upload the new CRX archives:<br>
https://chrome.google.com/webstore/developer/edit/pnhechapfaindjhompbnflcldabbghjo<br>
https://chrome.google.com/webstore/developer/edit/iodihamcpbpeioajjeobimgagajmlibd
Look for "Upload Dogfood Version". This will post the update only for Googlers
to get some last minute feedback before releasing to the world. If you want to
control the release more, you can set the percentage field, but usually we leave
it unset (i.e. 100%).
### Internal Announce!
Send an e-mail to the internal [chrome-hterm group] announcing the new release.
Here's an example posting:<br>
https://groups.google.com/a/chromium.org/d/msg/chromium-hterm/_AcmwvdGFCc/Cne7Q8B3CQAJ
### Upload the (stable) Release for Everyone
Visit the [CWS] dashboard to upload the new CRX file:<br>
https://chrome.google.com/webstore/developer/edit/pnhechapfaindjhompbnflcldabbghjo<br>
https://chrome.google.com/webstore/developer/edit/iodihamcpbpeioajjeobimgagajmlibd
This time use the "Upload Updated Package" option. Once that's done, use
"Remove" on the dogfood version so the display doesn't get confusing.
### Public Announce!
Send the same announcement as before but to the the public
[chromium-hterm group].
## Branches
We don't currently have any. We strive to keep the latest tree stable.
You should too!
## Translations
Once `_locales/en/messages.json` has updates that need translating, follow the
directions/guidelines in the [Translations documentation](./translations.md).
## Calendar
We don't have one. Releases are made as changes roll in.
We try to release on Mon-Wed to line up with normal working hours.
The [CWS] delays all publishing currently, so we assume changes will go live
before Friday.
Similarly, try to follow:
* Avoid US holidays (and large international ones if possible).
* Follow the normal Google production freeze schedule.
## Launch Bugs
* https://goto.google.com/chrome-secure-shell-prd: PRD (Product Requirements Document)
* https://goto.google.com/chrome-secure-shell-pdd: PDD (Privacy Design Document)
* https://crbug.com/205752: Main launch bug.
* https://crbug.com/211243: Security review launch bug.
* https://crbug.com/200406: Tracker bug for initial SSH NaCl client.
[CWS]: https://chrome.google.com/webstore
[chrome-hterm group]: http://g/chrome-hterm
[chrome-secure-shell-publishers group]: http://g/chrome-secure-shell-publishers
[chromium-hterm group]: https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-hterm
[mpm browser]: https://mpmbrowse.corp.google.com/packagez?package=security%2Fnassh