Release Workflow
This document outlines the release workflow for the Thesis Management project. It is intended for all developers and team members involved in managing or triggering releases.
👥 Role Groups
Two key roles exist:
- Thesis Management Developers
- Thesis Management Maintainers
Maintainers have elevated permissions, such as the ability to merge small PRs directly and create or bump releases.
🔁 Git Branch Workflow
Feature Branches & Pull Requests
All work (features, bug fixes, improvements) must be done in dedicated branches derived from develop:
- Use clear and consistent naming like
feature/xyz,bugfix/abc, orchore/some-task.
Once a task is complete:
- Open a Pull Request (PR) targeting
develop. - The PR may contain multiple commits but must be well-documented.
⚠️ Pull Request Size Warning:
Keep PRs small and easy to review. As a general guideline, limit PRs to a maximum of 600 changed lines.
Large PRs are harder to review and more prone to delays or missed issues. - At least one Maintainer must approve the PR.
- Merge using Squash Merge — this automatically triggers a test server deployment.
After thorough testing of the new features on the test server:
- A Maintainer should be contacted to merge the current state of
developintomain. - This must be done via merge commit (not squash), making
maina mirror ofdevelop, with no additional commits.
Automated Releases
| Target | Branch | Server |
|---|---|---|
| Development Deployment | develop | Test Server |
| Production Deployment | main | Production Server |
🌐 Deployment URLs
- Test Server: https://thesis-dev.aet.cit.tum.de
- Note: This is a test server and not intended for production use.
- Credentials: Use your TUM credentials to log in.
- Production Server: https://thesis.aet.cit.tum.de
- Note: This is the production server and should be used for live operations.
- Credentials: Use your TUM credentials to log in.
Automation:
- Merges into
develop→ automatically trigger a deployment to the Test Environment (⚠️ this is not considered a release) - Merges into
main→ automatically trigger a deployment to Production, provided that version numbers in Client and Server were updated and are identical - Manual deployments to Production from
mainordevelopremain possible
⚠️ Production Release Behavior
Once something is pushed to main and GitHub detects a new version in the application properties:
- A new GitHub Release is automatically created.
- It points to the
mainbranch and uses the version inside the properties as the title (e.g.v4.0.0). - The description is initially empty and must be updated manually.
➕ Please refer to Creating a New Release for versioning and tag details.
➕ Look at previous PRs and releases for description style and structure.
📦 Release and Repository Rules
- Releases are always created from the
mainbranch. mainis updated only via merge commits fromdevelop.- Never squash or rebase onto
main. - Only Maintainers are allowed to perform merges/pushes into
main.
🚀 Releasing to Production
Prerequisites
- Ensure client and server version numbers have been incremented
Steps
-
Ensure
developis up to date and contains all relevant changes -
Switch to main and pull latest changes
git checkout main
git pull origin main
- Merge develop into main
git merge develop --no-ff -m "Merge Release vX.Y.Z to main"
- Push changes to main
git push origin main
🔖 Version Naming Convention
Use semantic versioning: vX.Y.Z
X= Major – for breaking changes or architecture overhaulsY= Minor – for backward-compatible featuresZ= Patch – for bugfixes and small improvements
🛑 Important Notes
- Only Maintainers are allowed to perform production releases
- Every production deployment via
mainmust be associated with a new version and GitHub release. - Test your changes thoroughly before merging into
main
For questions, please contact the Thesis Management Maintainer team.
Updated: May 2025