From fd4c341924693f991a6c762cbe8076367c6bbe42 Mon Sep 17 00:00:00 2001 From: Philip Molares Date: Sun, 2 Feb 2025 22:48:09 +0100 Subject: [PATCH] docs: add release_checklist.md We should include the release checklist in the docs Signed-off-by: Philip Molares --- docs/content/dev/release_checklist.md | 217 ++++++++++++++++++++++++++ docs/mkdocs.yml | 1 + 2 files changed, 218 insertions(+) create mode 100644 docs/content/dev/release_checklist.md diff --git a/docs/content/dev/release_checklist.md b/docs/content/dev/release_checklist.md new file mode 100644 index 000000000..52e915a27 --- /dev/null +++ b/docs/content/dev/release_checklist.md @@ -0,0 +1,217 @@ +# Release Checklist: + +## Preparations: + +- [ ] Create release PR(s) + - [ ] In the main repo (actually only create a local branch to include all the fixes, additions and so on and only push and create a PR after testing) + - [ ] Release PR in + - [ ] Release PR in +- [ ] Security fixes (make sure all available undisclosed security fixes are merged) +- [ ] Bump the version + - [ ] docs/content/dev/openapi.yml + - version number image + - [ ] docs/content/setup/manual-setup.md + - `git clone` branch + - `git checkout` branch + - [ ] package.json + - `version` + - [ ] docs/content/setup/docker.md + - Update docker-compose in the docs +- [ ] Make sure `yarn.lock` is up to date +- [ ] Make sure translations are up to date + - We use [poeditor_pull](https://github.com/costales/poeditor_pull) to download all language files from POEditor. + + 1. change the following line in the script + ```python + - r_lang = requests.post('https://api.poeditor.com/v2/projects/export', dict(api_token=project_api, id=project_id, language=lang['code'], type="po")) + + r_lang = requests.post('https://api.poeditor.com/v2/projects/export', dict(api_token=project_api, id=project_id, language=lang['code'], type="key_value_json")) + ``` + 2. run the script. + 3. update the json files in the `locales` directory. + - any languages with 0% translations should not be included + 4. If any languages are new, they need to be added to `locales/_supported.json` +- [ ] Write release notes (`public/docs/release-notes.md`) + - [ ] Update date + - [ ] General description + - [ ] Things requiring special action beside updating the software + - [ ] New features + - [ ] Bug fixes + - [ ] Enhancements + - [ ] Add all contributors + - sort alphabetically + - [ ] Update `AUTHORS` file + +## Final Testing: + +- [ ] Create release tar ball +```bash +mkdir /tmp/hedgedoc && cd /tmp/hedgedoc +git clone -b master https://github.com/hedgedoc/hedgedoc.git . +yarn install +yarn build +cd .. +tar cvzf hedgedoc-x.y.z.tar.gz --sort=name --exclude hedgedoc/node_modules --exclude hedgedoc/.git --exclude hedgedoc/.github --exclude hedgedoc/.yarn/cache hedgedoc +``` + +Use this tar ball to test the following things: + +### Account system + +- [ ] User registration works +- [ ] User login works +- [ ] User self-deletion works + +### Notes + +- [ ] Create new note works +- [ ] Create new note with custom alias works when FreeURL-mode is enabled +- [ ] Create new note with custom alias fails when FreeURL-mode is disabled +- [ ] New note keeps content (visit, write something, leave, visit again after a minute) +- [ ] API `POST /new` works + - `curl -i -d '# hello world' -H "Content-Type: text/markdown" http://localhost:3000/new` +- [ ] API `POST /new/some-test-note` works when FreeURL-mode is enabled +- [ ] API `POST /new/some-test-note` fails when FreeURL-mode is disabled +- [ ] Working with 2 (or more) devices on a page works and results in the same document +- [ ] Uploads work for images +- [ ] Uploads fail for other data (e.g. binaries) + +### Database + +#### Sqlite + +- [ ] Sqlite works +- [ ] Keeps content of already existing SQLite file from older version + +#### Postgres + +- [ ] Postgres works + +Run `docker run -d --name=hd1-pg -p 5432:5432 -e POSTGRES_USER=hd1db -e POSTGRES_PASSWORD=hd1db -e POSTGRES_DB=hd1db postgres:latest` +and put this into your config: +``` +"db": { + "username": "hd1db", + "password": "hd1db", + "database": "hd1db", + "host": "localhost", + "port": "5432", + "dialect": "postgres" +}, +``` +#### MariaDB + +- [ ] MariaDB works + +Run `docker run --name=hd1-mysql -p 3306:3306 -e MARIADB_USER=hd1db --env MARIADB_PASSWORD=hd1db --env MARIADB_DATABASE=hd1db -e MARIADB_RANDOM_ROOT_PASSWORD=true --rm -d mariadb:latest` +and put this into your config: +``` +"db": { + "username": "hd1db", + "password": "hd1db", + "database": "hd1db", + "host": "localhost", + "port": "5432", + "dialect": "mariadb" +}, +``` + +### Features page + +- [ ] Loading `/features` results in no browser console errors (they may appear for iframed code) +- [ ] Diagrams render without error +- [ ] MathJAX rendering works for inline `$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$` +- [ ] MathJAX rendering works for multi-line (see features page) +- [ ] Codeblocks areas are highlighted and have line numbers in front. + +### Table of content (TOC) tests + +- [ ] TOC renders in the document as content +- [ ] TOC renders in the lower right corner of the document in `both`-view +- [ ] TOC renders besides the document in the `view`-view +- [ ] TOC renders besides the document in `published`-view +- [ ] Interactive TOC follows the header while scrolling in `both`-view +- [ ] Interactive TOC follows the header while scrolling in `view`-view +- [ ] Interactive TOC follows the header while scrolling in `published`-view + +### Embeddings + +Click in them an try to play around with them. Don't just check they exist and show up. + +- [ ] Youtube embedding works +- [ ] Vimeo embedding works +- [ ] Gist embedding works + +### Working YAML-Meta + +- [ ] Testing each option if it works + +### GDPR features + +- [ ] Delete account works +- [ ] When account is deleted, verify notes are gone as well +- [ ] Data export works + +### Auth + +- [ ] SAML + - config +``` +"saml": { + "idpSsoUrl": "https://auth.hedgedoc.cloud/application/saml/test-hd1/sso/binding/redirect/", + "idpCert": "/tmp/auth.hedgedoc.cloud.pem", + "identifierFormat": "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + "attribute": { + "id": "http://schemas.goauthentik.io/2021/02/saml/uid", + "username": "http://schemas.goauthentik.io/2021/02/saml/username", + "email": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" + } +} +``` +- [ ] LDAP + - docker image: `docker run --rm -p 10389:10389 -p 10636:10636 -d ghcr.io/rroemhild/docker-test-openldap:master` + - config +``` +"ldap": { + "url": "ldap://localhost:10389", + "bindDn": "cn=admin,dc=planetexpress,dc=com", + "bindCredentials": "GoodNewsEveryone", + "searchBase": "ou=people,dc=planetexpress,dc=com", + "searchFilter": "(&(uid={{username}})(objectClass=inetOrgPerson))", + "searchAttributes": ["uid", "cn"], + "usernameField": "cn", + "useridField": "uid", + "tlsOptions": {} +} +``` +- [ ] OAuth2 +``` +"oauth2": { + "baseURL": "https://auth.hedgedoc.cloud/application/o/test-hedgedoc/", + "userProfileURL": "https://auth.hedgedoc.cloud/application/o/userinfo/", + "tokenURL": "https://auth.hedgedoc.cloud/application/o/token/", + "authorizationURL": "https://auth.hedgedoc.cloud/application/o/authorize/", + "clientID": "REDACTED", + "clientSecret": "REDACTED", + "scope": "openid profile user", + "userProfileUsernameAttr": "preferred_username", + "userProfileEmailAttr": "email", + "userProfileDisplayNameAttr": "name" +} +``` +- [ ] GitHub +- [ ] Rate-limiting for basic user/password + +## Release: + +- [ ] Merge Release PR in main repo +- [ ] Tag commit with `git tag 1.x.y` and push it +- [ ] Create release in GitHub and upload tar ball to GitHub +- [ ] Publish Security Advisories (if they exist) +- [ ] Merge Release PR in + - Wait for the images to be available at +- [ ] Update website by running the ["deploy" workflow](https://github.com/hedgedoc/hedgedoc.github.io/actions?query=workflow%3A%22Deploy+to+github+actions+branch%22) in hedgedoc/hedgedoc.github.io +- [ ] Update docs.hedgedoc.org by running the ["build" workflow](https://github.com/hedgedoc/docs.hedgedoc.org/actions/workflows/build.yml) +- [ ] Merge Release PR in + - (optional) All people doing the release boost the post +- [ ] Share the good news in the Matrix-Chatroom +- [ ] Change this release checklist if necessary diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 0a09f04f6..1654e305b 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -48,6 +48,7 @@ nav: - 'Operational Transformation': dev/ot.md - Webpack: dev/webpack.md - 'Documentation': dev/documentation.md + - 'Release Checklist': dev/release_checklist.md - FAQ: faq.md markdown_extensions: - toc: