Van idee tot productie, volledig getrackt
Redmine is het centrale systeem voor software development en IT operations. Met krachtige issue tracking, sprint planning en Git integratie biedt het volledige transparantie over de development pipeline.
| Tracker | Gebruik | Workflow |
|---|---|---|
| Bug | Defects, errors | New → In Progress → Resolved → Closed |
| Feature | Nieuwe functionaliteit | New → Analysis → Development → Testing → Done |
| Support | Technische vragen | New → In Progress → Feedback → Closed |
| Epic | Grote initiatieven | Open → In Progress → Done |
| Status | Trigger | Volgende | Notities |
|---|---|---|---|
| New | Issue aangemaakt | In Progress | Backlog prioritering |
| In Progress | Developer assigned | Resolved | Git branch actief |
| Resolved | Code complete | Feedback | PR ready for review |
| Feedback | QA review | In Progress of Closed | Review resultaat |
| Closed | Approved | - | Issue afgerond |
Een Epic groepeert gerelateerde issues onder één paraplu:
Na het aanmaken van een Epic verschijnt deze automatisch in de sidebar:
# Sync Epic queries naar sidebar
just redmine-sync-epic-queries
Klant-gerapporteerde bugs escaleren automatisch:
Development uren synchroniseren naar projectadministratie:
# API key in header
curl -H "X-Redmine-API-Key: YOUR_API_KEY" \
https://redmine.example.com/issues.json
# Alle issues
GET /issues.json?project_id=1&status_id=open
# Specifiek issue
GET /issues/123.json
# Issue aanmaken
POST /issues.json
{
"issue": {
"project_id": 1,
"tracker_id": 1,
"subject": "Bug in login module",
"description": "Beschrijving...",
"priority_id": 2,
"assigned_to_id": 5
}
}
# Issue updaten
PUT /issues/123.json
{
"issue": {
"status_id": 3,
"notes": "Fixed in commit abc123"
}
}
# Child issue onder Epic
POST /issues.json
{
"issue": {
"project_id": 1,
"tracker_id": 2,
"parent_issue_id": 7,
"subject": "Subtask van Epic"
}
}
| ID | Tracker |
|---|---|
| 1 | Bug |
| 2 | Feature |
| 3 | Support |
| 4 | Epic |
| ID | Status |
|---|---|
| 1 | New |
| 2 | In Progress |
| 3 | Resolved |
| 4 | Feedback |
| 5 | Closed |
| 6 | Rejected |
Reageer direct vanuit Mattermost op Redmine issues:
/reply #23 Code review is klaar, ready for merge
Dit voegt een notitie toe aan issue #23.
| Event | Kanaal | Bericht |
|---|---|---|
| Nieuw issue | #development | 📋 New: [subject] assigned to @user |
| Status change | #development | 🔄 #23 moved to "In Progress" |
| PR merged | #development | ✅ #23 closed via PR merge |
feature/{issue-id}-{short-description}
bugfix/{issue-id}-{short-description}
hotfix/{issue-id}-{short-description}
Voorbeelden:
feature/23-user-dashboard
bugfix/45-login-timeout
hotfix/67-security-patch
[#{issue-id}] Beschrijving van wijziging
refs #23 - Voegt referentie toe aan issue
fixes #23 - Sluit issue automatisch bij merge
closes #23 - Sluit issue automatisch bij merge
Voorbeeld:
[#23] Add user dashboard component
- Created DashboardWidget component
- Added API integration
- Unit tests included
refs #23
-- Sprint burndown data
SELECT
date_trunc('day', updated_on) as datum,
COUNT(*) FILTER (WHERE status_id < 5) as open_issues,
COUNT(*) FILTER (WHERE status_id >= 5) as closed_issues
FROM issues
WHERE fixed_version_id = (
SELECT id FROM versions
WHERE status = 'open'
ORDER BY effective_date
LIMIT 1
)
GROUP BY 1
ORDER BY 1;
-- Velocity per sprint
SELECT
v.name as sprint,
COUNT(*) as total_issues,
SUM(CASE
WHEN cf.value = 'XS' THEN 1
WHEN cf.value = 'S' THEN 2
WHEN cf.value = 'M' THEN 3
WHEN cf.value = 'L' THEN 5
WHEN cf.value = 'XL' THEN 8
ELSE 0
END) as story_points
FROM issues i
JOIN versions v ON i.fixed_version_id = v.id
LEFT JOIN custom_values cf ON i.id = cf.customized_id
AND cf.custom_field_id = 1 -- T-shirt size field
WHERE v.status = 'closed'
AND v.effective_date > NOW() - INTERVAL '6 months'
GROUP BY v.id, v.name
ORDER BY v.effective_date;
-- Bug rate trend
SELECT
date_trunc('week', created_on) as week,
COUNT(*) as total_issues,
COUNT(*) FILTER (WHERE tracker_id = 1) as bugs,
ROUND(100.0 * COUNT(*) FILTER (WHERE tracker_id = 1) / COUNT(*), 1) as bug_pct
FROM issues
WHERE created_on > NOW() - INTERVAL '12 weeks'
GROUP BY 1
ORDER BY 1;
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| 422 bij API call | Validatie error | Check required fields |
| Git hooks werken niet | Configuratie | Check repository settings |
| Slow queries | Database | Run rake db:index |
# Applicatie logs
docker logs asd-redmine
# Production log
docker exec asd-redmine tail -f /usr/src/redmine/log/production.log