doc/RELEASE_PROCESS.md
Document ID: REL-PROC-DESKTOP-001
Version: 1.0
Last Updated: 2026-01-02
Owner: Engineering Team
This document defines the release process for draw.io Desktop. Automated controls via GitHub Actions handle repeatable tasks, while manual steps focus on verification and approval.
Repository: https://github.com/jgraph/drawio-desktop
Submodule: drawio (core editor)
CI/CD: GitHub Actions
Tooling versions are pinned in the GitHub Actions workflows to ensure reproducible builds.
| Tool | Version | Controlled In |
|---|---|---|
| Node.js | 24.x (LTS) | .github/workflows/*.yml |
| npm | (bundled with Node) | — |
Note: npm is bundled with Node.js, ensuring consistent versions across environments.
When updating tooling versions:
| Role | Responsibility |
|---|---|
| Release Lead | Triggers workflow, verifies output, approves release |
| Reviewer | Reviews changes, provides approval before publish |
Small Team Note: Release Lead and Reviewer should be different people when possible. For solo releases, rely on automated checks and document the reason.
The prepare-release workflow automates:
npm audit and failing on critical/high vulnerabilitiesnpm outdated for reviewTo trigger:
29.0.4)drawio submodule. Leave empty to keep the current submodule pin — CI builds source the editor from drawio-dev's release branch, so the public submodule only needs to track what out-of-tree builders should see.What happens:
┌─────────────────────────────────────────────────────────────────┐
│ Workflow: prepare-release │
├─────────────────────────────────────────────────────────────────┤
│ 1. Validate version format (X.Y.Z) │
│ 2. Checkout with submodules (recursive) │
│ 3. Setup Node.js 24.x │
│ 4. Update drawio submodule → target ref │
│ └── Update nested submodules (recursive) │
│ 5. Update package.json version │
│ 6. npm ci │
│ 7. npm audit → FAIL if critical/high vulns │
│ 8. npm outdated → report only │
│ 9. Upload evidence artifacts │
│ 10. Commit + push │
│ 11. Create + push tag v{version} │
│ 12. Build workflows trigger automatically │
└─────────────────────────────────────────────────────────────────┘
Evidence produced:
release-evidence-v{VERSION} artifact containing:
audit-results.jsonaudit-report.txtoutdated-report.txtBefore triggering the workflow:
| ✓ | Item |
|---|---|
| ☐ | Release scope documented (what's included) |
| ☐ | All feature changes merged to dev branch |
| ☐ | Target drawio ref exists and is tested |
After the prepare-release workflow completes:
Evidence: Link to successful build run: _______________
After all build workflows complete successfully:
CSC_LINK secret)Before publishing, the Reviewer verifies:
| ✓ | Check |
|---|---|
| ☐ | Workflow completed successfully |
| ☐ | npm audit shows no critical/high vulnerabilities |
| ☐ | Build workflows passed for all platforms |
| ☐ | Test cases passed (Section 6) |
| Name | Date | |
|---|---|---|
| Release Lead | ||
| Reviewer |
Solo Release: Document reason, ensure all automated checks pass, perform extended testing.
Run against the built application before publishing.
| ID | Test | Expected | Pass |
|---|---|---|---|
| T01 | Launch application | Main window displays | ☐ |
| T02 | Create new diagram | Blank canvas opens | ☐ |
| T03 | Add shapes | Shapes render, move, resize | ☐ |
| T04 | Save file | Saves without error | ☐ |
| T05 | Open file | Displays correctly | ☐ |
| T06 | Help > About | Shows correct version | ☐ |
| ID | Test | Expected | Pass |
|---|---|---|---|
| T07 | Export PNG/PDF/SVG | Valid output | ☐ |
| T08 | Undo/Redo | Actions reverse | ☐ |
| ID | Check | Method | Pass |
|---|---|---|---|
| S01 | No external scripts | DevTools Network tab | ☐ |
| S02 | No data exfiltration | Monitor during save | ☐ |
Tested by: _______________ Date: _______________
Version: _______________
Issue: _______________________________________________
Root Cause: _______________________________________________
Corrective Action: _______________________________________________
Completed by: _______________ Date: _______________
## v[VERSION] - [DATE]
### Changes
- [Change 1]
- [Change 2]
### Fixes
- [Fix 1]
### Security
- Dependencies updated
### Known Issues
- [If any]
Evidence is automatically retained:
| Evidence | Location | Retention |
|---|---|---|
| Workflow logs | GitHub Actions | 90 days (GitHub default) |
| Audit artifacts | Actions → Artifacts | 365 days (configured) |
| Release assets | GitHub Releases | Permanent |
| Git tags/commits | Repository | Permanent |
For audits requiring longer retention, download artifacts to secure storage.
audit-report.txt in workflow artifactsnpm audit fix locally, commit, re-run workflowgit push --delete origin v{VERSION}drawio_ref input to specify the correct ref — or leave it empty to keep the current submodule pin (the CI build workflows source the editor from drawio-dev, so they are unaffected by a lagging public pin)| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0 | 2026.01.02 | D Benson | Initial release |