From afdddcab63b627e34d2c424d8d6f4ae22b6a4dbe Mon Sep 17 00:00:00 2001 From: Beth Probert Date: Mon, 10 Nov 2025 15:35:03 +0000 Subject: [PATCH 1/7] Add draft release checklist --- .gitlab/issue_templates/Release checklist.md | 71 ++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 .gitlab/issue_templates/Release checklist.md diff --git a/.gitlab/issue_templates/Release checklist.md b/.gitlab/issue_templates/Release checklist.md new file mode 100644 index 00000000..1fde9980 --- /dev/null +++ b/.gitlab/issue_templates/Release checklist.md @@ -0,0 +1,71 @@ +## Release Checklist: vX.Y.Z + +This checklist tracks the process for releasing version **vX.Y.Z** of the OpenFlexure Microscope Server. + +--- + +### Phase 1: Preparation (T-6 Weeks _minimum_) + +This phase focuses on planning the release and, crucially, getting any major infrastructure or build system changes merged *before* the feature freeze. + +* [ ] **Define Scope:** Create the `vX.Y.Z` milestone in GitLab and tag all intended feature MRs with it. Thisn is often done in a planning meeting with the core team. +* [ ] **Schedule:** Set and announce the **Feature Freeze** and **Release Date**. Feature freeze should be at least 2 weeks before the release date. +* [ ] **Build System:** Identify all required OS-level, build system, or OS customiser changes. +* [ ] **Build System:** **Deadline:** All build system MRs must be merged and tested. (This should happen *as early as possible* in the cycle). + +--- + +### Phase 2: Feature Freeze (T-2 Weeks) + +* [ ] **Announce:** Announce the Feature Freeze deadline one week out. This should be announced on the OpenFlexure Forum and in a message/email to the core team. +* [ ] **Deadline:** **FEATURE FREEZE**. All feature MRs for the milestone must be merged. +* [ ] **Branch:** Create a `release/vX.Y.Z` branch from `main`. + * *From this point, only bug fixes (regressions) are merged into this branch.* +* [ ] **Communication:** Inform the team that all new feature work should target the *next* milestone. + +--- + +### Phase 3: Testing & Qualification (T-1 Week) + +This phase is dedicated to intensive testing and bug fixing on the `release/vX.Y.Z` branch. + +* [ ] **Create Image:** Flash at least one SD card with the new image. +* [ ] **Create Test Plan:** Document the specific tests to be run. +* [ ] **Execute Test Plan:** + * [ ] HQ Camera Test + * [ ] High-Resolution Test + * [ ] Low-Resolution Test + * [ ] ROM Test + * [ ] Stitching Tests + * [ ] Test final image on all supported hardware revisions. + * [ ] Test functionality on the Microscope Simulator. +* [ ] **Triage:** Triage all bugs found. Fix any release-blocking bugs. +* [... ] **Repeat:** Re-build image and re-test as bugs are fixed. Update release date if absolutely necessary. + +--- + +### Phase 4: Release Day (T-0) + +* [ ] **Final Version Bump:** + * [ ] **Server Package:** Update version number (add specific files). + * [ ] **Stitching Package:** Update version number (add specific files). + * [ ] Commit and merge the final version bumps into the `release/vX.Y.Z` branch. +* [ ] **Final Build:** Generate the final, official release image from the `release/vX.Y.Z` branch. +* [ ] **Draft Notes:** Draft the release notes and forum post. +* [ ] **Merge:** Merge the `release/vX.Y.Z` branch into `main`. +* [ ] **Tag:** Create a new Git tag on `main` (e.g., `vX.Y.Z`). +* [ ] **Publish:** + * [ ] Push the tag to GitLab. + * [ ] Publish new versions of software sub-packages, such as openflexure-stitching, on PyPi. + * [ ] Create a new **GitLab Release** from the tag. + * [ ] Upload the final release image and other artifacts to the GitLab Release. + * [ ] Paste the release notes into the GitLab Release description. + +--- + +### Phase 5: Post-Release + +* [ ] **Communicate:** Publish the release announcement on the OpenFlexure forum. +* [ ] **Announce:** Share the forum post on other relevant channels (e.g., LinkedIn, Emailing Collaborators). +* [ ] **Close:** Close this issue and the corresponding GitLab Milestone. +* [ ] **Celebrate:** 🎉 From 6af00b90fa6214f6814c006df00e1b06fd05c9ef Mon Sep 17 00:00:00 2001 From: Beth Probert Date: Mon, 10 Nov 2025 15:37:25 +0000 Subject: [PATCH 2/7] Small wording update --- .gitlab/issue_templates/Release checklist.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab/issue_templates/Release checklist.md b/.gitlab/issue_templates/Release checklist.md index 1fde9980..353d6e3b 100644 --- a/.gitlab/issue_templates/Release checklist.md +++ b/.gitlab/issue_templates/Release checklist.md @@ -18,7 +18,7 @@ This phase focuses on planning the release and, crucially, getting any major inf ### Phase 2: Feature Freeze (T-2 Weeks) * [ ] **Announce:** Announce the Feature Freeze deadline one week out. This should be announced on the OpenFlexure Forum and in a message/email to the core team. -* [ ] **Deadline:** **FEATURE FREEZE**. All feature MRs for the milestone must be merged. +* [ ] **Deadline:** **FEATURE FREEZE**. All MRs for the milestone must be merged. * [ ] **Branch:** Create a `release/vX.Y.Z` branch from `main`. * *From this point, only bug fixes (regressions) are merged into this branch.* * [ ] **Communication:** Inform the team that all new feature work should target the *next* milestone. @@ -32,7 +32,7 @@ This phase is dedicated to intensive testing and bug fixing on the `release/vX.Y * [ ] **Create Image:** Flash at least one SD card with the new image. * [ ] **Create Test Plan:** Document the specific tests to be run. * [ ] **Execute Test Plan:** - * [ ] HQ Camera Test + * [ ] HQ Camera Test (Optional) * [ ] High-Resolution Test * [ ] Low-Resolution Test * [ ] ROM Test From 1d7b413d16b5a674da540e4c46d591650c24aac2 Mon Sep 17 00:00:00 2001 From: Beth Probert Date: Mon, 10 Nov 2025 15:43:43 +0000 Subject: [PATCH 3/7] Fix typo --- .gitlab/issue_templates/Release checklist.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab/issue_templates/Release checklist.md b/.gitlab/issue_templates/Release checklist.md index 353d6e3b..4ce3b0d5 100644 --- a/.gitlab/issue_templates/Release checklist.md +++ b/.gitlab/issue_templates/Release checklist.md @@ -40,7 +40,7 @@ This phase is dedicated to intensive testing and bug fixing on the `release/vX.Y * [ ] Test final image on all supported hardware revisions. * [ ] Test functionality on the Microscope Simulator. * [ ] **Triage:** Triage all bugs found. Fix any release-blocking bugs. -* [... ] **Repeat:** Re-build image and re-test as bugs are fixed. Update release date if absolutely necessary. +* [ ] **Repeat:** Re-build image and re-test as bugs are fixed. Update release date if absolutely necessary. (Optional) --- @@ -68,4 +68,4 @@ This phase is dedicated to intensive testing and bug fixing on the `release/vX.Y * [ ] **Communicate:** Publish the release announcement on the OpenFlexure forum. * [ ] **Announce:** Share the forum post on other relevant channels (e.g., LinkedIn, Emailing Collaborators). * [ ] **Close:** Close this issue and the corresponding GitLab Milestone. -* [ ] **Celebrate:** 🎉 +* [ ] **Celebrate!** From f128caedff60a3399462da89929c1e2e8721b3fa Mon Sep 17 00:00:00 2001 From: Beth Probert Date: Wed, 12 Nov 2025 11:10:44 +0000 Subject: [PATCH 4/7] Apply suggestions from code review of branch 569-release-checklist Co-authored-by: Julian Stirling --- .gitlab/issue_templates/Release checklist.md | 36 +++++++++++++++----- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/.gitlab/issue_templates/Release checklist.md b/.gitlab/issue_templates/Release checklist.md index 4ce3b0d5..83f78813 100644 --- a/.gitlab/issue_templates/Release checklist.md +++ b/.gitlab/issue_templates/Release checklist.md @@ -8,9 +8,14 @@ This checklist tracks the process for releasing version **vX.Y.Z** of the OpenFl This phase focuses on planning the release and, crucially, getting any major infrastructure or build system changes merged *before* the feature freeze. -* [ ] **Define Scope:** Create the `vX.Y.Z` milestone in GitLab and tag all intended feature MRs with it. Thisn is often done in a planning meeting with the core team. +* [ ] **Prepare: **Create the `Server vX.Y.Z`/`Server vX.Y.Z-(alpha|beta)A` milestone in GitLab at organisation level, and create an issue with this template. +* [ ] **Define Scope:** Tag all intended Issues and feature MRs with it. This is often done in a planning meeting with the core team. Issues and MRs should be tagged in: + * [ ] Server repo + * [ ] Stitching repo + * [ ] OS customiser repo + * [ ] OFM CLI tools +* [ ] **Define upstream versions:** Does this release depend on a major dependency change (such as new LabThings version)? If so these must have issues. * [ ] **Schedule:** Set and announce the **Feature Freeze** and **Release Date**. Feature freeze should be at least 2 weeks before the release date. -* [ ] **Build System:** Identify all required OS-level, build system, or OS customiser changes. * [ ] **Build System:** **Deadline:** All build system MRs must be merged and tested. (This should happen *as early as possible* in the cycle). --- @@ -32,13 +37,26 @@ This phase is dedicated to intensive testing and bug fixing on the `release/vX.Y * [ ] **Create Image:** Flash at least one SD card with the new image. * [ ] **Create Test Plan:** Document the specific tests to be run. * [ ] **Execute Test Plan:** - * [ ] HQ Camera Test (Optional) - * [ ] High-Resolution Test - * [ ] Low-Resolution Test - * [ ] ROM Test - * [ ] Stitching Tests - * [ ] Test final image on all supported hardware revisions. - * [ ] Test functionality on the Microscope Simulator. + * [ ] Camera Calibration + * [ ] Picamera v2 + * [ ] Picamera HQ + * [ ] Camera Stage Mapping + * [ ] v7 Microscope + * [ ] Simulation + * [ ] Movement + * [ ] v7 Microscope + * [ ] Simulation + * [ ] Autofocus + * [ ] v7 Microscope + * [ ] Simulation + * [ ] Smart Scan + stitching + * [ ] v7 Microscope (we probably need a bit of detail here RE slides) + * [ ] Simulation + * [ ] Recentre and ROM (v7 Microscope only) + * [ ] Opening each tab and sub-tab and checking things look as expected + * [ ] v7 Microscope + * [ ] Simulation + * [ ] Manual * [ ] **Triage:** Triage all bugs found. Fix any release-blocking bugs. * [ ] **Repeat:** Re-build image and re-test as bugs are fixed. Update release date if absolutely necessary. (Optional) From 1311cc103e9ebeb262015b3c4ba60fbdc408aee8 Mon Sep 17 00:00:00 2001 From: Beth Probert Date: Wed, 12 Nov 2025 11:27:02 +0000 Subject: [PATCH 5/7] Responding to comment on branching. --- .gitlab/issue_templates/Release checklist.md | 28 ++++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/.gitlab/issue_templates/Release checklist.md b/.gitlab/issue_templates/Release checklist.md index 83f78813..aac19824 100644 --- a/.gitlab/issue_templates/Release checklist.md +++ b/.gitlab/issue_templates/Release checklist.md @@ -4,6 +4,20 @@ This checklist tracks the process for releasing version **vX.Y.Z** of the OpenFl --- +### Branching Strategy (as of v3 development) + +The current branching strategy is for **alpha and beta development of v3**. +There is an issue open (#606) to discuss branching beyond v3. + +* The **default branch** is called `v3`. +* **Feature branches** are made from `v3` and merged back into `v3`. +* We **do not** make a new release branch. +* We **still perform a feature freeze** before release. +* We **still tag each release** and post it on the forum. +* We **do not rename** the `v3` branch or create additional long-lived branches for releases. + +--- + ### Phase 1: Preparation (T-6 Weeks _minimum_) This phase focuses on planning the release and, crucially, getting any major infrastructure or build system changes merged *before* the feature freeze. @@ -24,15 +38,14 @@ This phase focuses on planning the release and, crucially, getting any major inf * [ ] **Announce:** Announce the Feature Freeze deadline one week out. This should be announced on the OpenFlexure Forum and in a message/email to the core team. * [ ] **Deadline:** **FEATURE FREEZE**. All MRs for the milestone must be merged. -* [ ] **Branch:** Create a `release/vX.Y.Z` branch from `main`. - * *From this point, only bug fixes (regressions) are merged into this branch.* +* [ ] **Branching Note:** During alpha and beta development, feature freeze marks the point where only **bug fixes and release preparation** may be merged into the default branch. * [ ] **Communication:** Inform the team that all new feature work should target the *next* milestone. --- ### Phase 3: Testing & Qualification (T-1 Week) -This phase is dedicated to intensive testing and bug fixing on the `release/vX.Y.Z` branch. +This phase is dedicated to intensive testing and bug fixing. * [ ] **Create Image:** Flash at least one SD card with the new image. * [ ] **Create Test Plan:** Document the specific tests to be run. @@ -54,7 +67,7 @@ This phase is dedicated to intensive testing and bug fixing on the `release/vX.Y * [ ] Simulation * [ ] Recentre and ROM (v7 Microscope only) * [ ] Opening each tab and sub-tab and checking things look as expected - * [ ] v7 Microscope + * [ ] v7 Microscope * [ ] Simulation * [ ] Manual * [ ] **Triage:** Triage all bugs found. Fix any release-blocking bugs. @@ -67,11 +80,10 @@ This phase is dedicated to intensive testing and bug fixing on the `release/vX.Y * [ ] **Final Version Bump:** * [ ] **Server Package:** Update version number (add specific files). * [ ] **Stitching Package:** Update version number (add specific files). - * [ ] Commit and merge the final version bumps into the `release/vX.Y.Z` branch. -* [ ] **Final Build:** Generate the final, official release image from the `release/vX.Y.Z` branch. + * [ ] Commit and merge the final version bumps into default branch. +* [ ] **Final Build:** Generate the final, official release image from the default branch. * [ ] **Draft Notes:** Draft the release notes and forum post. -* [ ] **Merge:** Merge the `release/vX.Y.Z` branch into `main`. -* [ ] **Tag:** Create a new Git tag on `main` (e.g., `vX.Y.Z`). +* [ ] **Tag:** Create a new Git tag on the default branch (e.g., `vX.Y.Z`). * [ ] **Publish:** * [ ] Push the tag to GitLab. * [ ] Publish new versions of software sub-packages, such as openflexure-stitching, on PyPi. From 560f863c477b47486c9baa3b5c157d2629cd4b70 Mon Sep 17 00:00:00 2001 From: Beth Probert Date: Wed, 12 Nov 2025 15:29:15 +0000 Subject: [PATCH 6/7] Apply suggestions from code review of branch 569-release-checklist Co-authored-by: Julian Stirling --- .gitlab/issue_templates/Release checklist.md | 60 ++++++++++++++------ 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/.gitlab/issue_templates/Release checklist.md b/.gitlab/issue_templates/Release checklist.md index aac19824..9e089d2d 100644 --- a/.gitlab/issue_templates/Release checklist.md +++ b/.gitlab/issue_templates/Release checklist.md @@ -34,10 +34,12 @@ This phase focuses on planning the release and, crucially, getting any major inf --- -### Phase 2: Feature Freeze (T-2 Weeks) +### Phase 2: Feature Freeze And Upstream Releases (T-2 Weeks) * [ ] **Announce:** Announce the Feature Freeze deadline one week out. This should be announced on the OpenFlexure Forum and in a message/email to the core team. * [ ] **Deadline:** **FEATURE FREEZE**. All MRs for the milestone must be merged. +* [ ] **Deadline:** **UPSTREAM RELEASES**. Any of our repos/packages upstream of the OS and server should have a defined release, for this release to target. + * [ ] Stitching Released * [ ] **Branching Note:** During alpha and beta development, feature freeze marks the point where only **bug fixes and release preparation** may be merged into the default branch. * [ ] **Communication:** Inform the team that all new feature work should target the *next* milestone. @@ -47,7 +49,7 @@ This phase focuses on planning the release and, crucially, getting any major inf This phase is dedicated to intensive testing and bug fixing. -* [ ] **Create Image:** Flash at least one SD card with the new image. +* [ ] **Create Image:** Flash at least one SD card with the new image. This image should be created off the default branch. * [ ] **Create Test Plan:** Document the specific tests to be run. * [ ] **Execute Test Plan:** * [ ] Camera Calibration @@ -63,7 +65,9 @@ This phase is dedicated to intensive testing and bug fixing. * [ ] v7 Microscope * [ ] Simulation * [ ] Smart Scan + stitching - * [ ] v7 Microscope (we probably need a bit of detail here RE slides) + * [ ] v7 Microscope + * [ ] At least 2 different H&E stained slides + * [ ] A blue stained biology slide, such as a wheat stem * [ ] Simulation * [ ] Recentre and ROM (v7 Microscope only) * [ ] Opening each tab and sub-tab and checking things look as expected @@ -77,19 +81,43 @@ This phase is dedicated to intensive testing and bug fixing. ### Phase 4: Release Day (T-0) -* [ ] **Final Version Bump:** - * [ ] **Server Package:** Update version number (add specific files). - * [ ] **Stitching Package:** Update version number (add specific files). - * [ ] Commit and merge the final version bumps into default branch. -* [ ] **Final Build:** Generate the final, official release image from the default branch. -* [ ] **Draft Notes:** Draft the release notes and forum post. -* [ ] **Tag:** Create a new Git tag on the default branch (e.g., `vX.Y.Z`). -* [ ] **Publish:** - * [ ] Push the tag to GitLab. - * [ ] Publish new versions of software sub-packages, such as openflexure-stitching, on PyPi. - * [ ] Create a new **GitLab Release** from the tag. - * [ ] Upload the final release image and other artifacts to the GitLab Release. - * [ ] Paste the release notes into the GitLab Release description. +By this stage: + +* All upstream packages are released. +* We will release the exact image used for testing. + +* [ ] **Draft Notes:** Draft the release notes for: + * [ ] High level summary for the sever release notes/changelog + * [ ] High level summary for the OS release notes + * [ ] Combined summary for the forum +* [ ] **Final Server Repo Commit:** + * [ ] Update version string in: + * [ ] `pyproject.toml` + * [ ] `test_version_strings.py` + * [ ] `package.json` + * [ ] `package-lock.json` (in 2 places!) + * [ ] Create `CHANGELOG` entry + * [ ] Add a title that is a link to the GitLab compare between the last release tag and this soon-to-be-made tag. + * [ ] Add the a high level summary of the server changes + * [ ] Run changelog helper to generate the list of MRs since the last tag `python change_log_helper.py -b v3 ` and copy these in below the summary. + * [ ] Run `codespell` on the changelog and use `` to silence codespell on any spelling errors in MR titles. + * [ ] Commit, Push, and Merge +* [ ] **Release:** + * [ ] On `build.openflexure.org` copy the image that passed testing from `/raspbian-openflexure/testing/` to `/raspbian-openflexure/v3_pre_release/`. + * [ ] **OS RELEASE** + * [ ] Go to the OS Customiser *Releases* page on GitLab and select New Release + * [ ] Create a new Tag Name in the format `vX.Y.Z` or `vX.Y.Z-(alpha|beta)A` + * [ ] **Important!** Enter a simple description into the `create tag` dialog, or GitLab only creates a lightweight tag. `Release for vX.Y.Z-(alpha|beta)A` is minimal and can be used. Check it is targeted at the correct branch, and save the tag. + * [ ] Copy in the High level summary for the OS into release notes + * [ ] Enter the URL to the OS image into the box at the bottom. with "Link Title" as `SD Card Image`. + * [ ] Create the release (This will create the tag) + * [ ] **SERVER RELEASE** + * [ ] Go to the Sever *Releases* page on GitLab and select New Release + * [ ] Create a new Tag Name in the format `vX.Y.Z` or `vX.Y.Z-(alpha|beta)A` + * [ ] **Important!** Enter a simple description into the `create tag` dialog, or GitLab only creates a lightweight tag. `Release for vX.Y.Z-(alpha|beta)A` is minimal and can be used. Check it is targeted at the correct branch, and save the tag. + * [ ] Copy in the relevant section from the `CHANGELOG` + * [ ] Enter the URL to the OS image into the box at the bottom. with "Link Title" as `SD Card Image`. + * [ ] Create the release (This will create the tag) --- From 7df1fea6431d661a62744e747da83cd8e7996bcf Mon Sep 17 00:00:00 2001 From: Beth Probert Date: Wed, 12 Nov 2025 15:32:18 +0000 Subject: [PATCH 7/7] Fix typo --- .gitlab/issue_templates/Release checklist.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab/issue_templates/Release checklist.md b/.gitlab/issue_templates/Release checklist.md index 9e089d2d..513b1c9f 100644 --- a/.gitlab/issue_templates/Release checklist.md +++ b/.gitlab/issue_templates/Release checklist.md @@ -87,7 +87,7 @@ By this stage: * We will release the exact image used for testing. * [ ] **Draft Notes:** Draft the release notes for: - * [ ] High level summary for the sever release notes/changelog + * [ ] High level summary for the server release notes/changelog * [ ] High level summary for the OS release notes * [ ] Combined summary for the forum * [ ] **Final Server Repo Commit:** @@ -112,7 +112,7 @@ By this stage: * [ ] Enter the URL to the OS image into the box at the bottom. with "Link Title" as `SD Card Image`. * [ ] Create the release (This will create the tag) * [ ] **SERVER RELEASE** - * [ ] Go to the Sever *Releases* page on GitLab and select New Release + * [ ] Go to the Server *Releases* page on GitLab and select New Release * [ ] Create a new Tag Name in the format `vX.Y.Z` or `vX.Y.Z-(alpha|beta)A` * [ ] **Important!** Enter a simple description into the `create tag` dialog, or GitLab only creates a lightweight tag. `Release for vX.Y.Z-(alpha|beta)A` is minimal and can be used. Check it is targeted at the correct branch, and save the tag. * [ ] Copy in the relevant section from the `CHANGELOG`