Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

M1 — Administration Redmine

APERTO-NOTA

Module M1 — Administration (Jour 1 — 7h)

Public : gestionnaire(s) de l’instance
Objectif : installer, configurer et administrer une instance Redmine 5.1.12 prête à l’emploi


Vérifier que les deux conteneurs sont en cours d’exécution :

docker ps

Résultat attendu :

CONTAINER ID   IMAGE            STATUS         PORTS
xxxxxxxxxxxx   redmine:5.1.12   Up X minutes   0.0.0.0:3000->3000/tcp
xxxxxxxxxxxx   postgres:15      Up X minutes

En cas d’erreur, consulter les logs :

docker compose logs redmine
docker compose logs db

Erreurs fréquentes :

  • Port 3000 déjà utilisé → modifier "3000:3000" en "3001:3000" dans le docker-compose.yml

  • WSL2 non activé → Panneau de configuration → Activer les fonctionnalités Windows → Sous-système Windows pour Linux


Onglet Général

ChampValeur
Titre de l’applicationRedmine - Dupont (exemple)
Formatage du texteCommonMark Markdown (GitHub Flavored)
Nom d’hôte et cheminlocalhost:3000
ProtocoleHTTP

Onglet Affichage

ChampValeur
Langue par défautFrançais
Forcer la langue pour les utilisateurs identifiéscoché
Format de dateBasé sur la langue de l’utilisateur
Format d’heureBasé sur la langue de l’utilisateur
Format des temps en heures0:45 h

Onglet Authentification

ChampValeur
Authentification obligatoireNon, autoriser l’accès anonyme aux projets publics
Inscription des nouveaux utilisateursactivation manuelle du compte
Longueur minimum des mots de passe8
Double authentificationoptionnel

Onglet API

ChampValeur
Activer l’API RESTcoché
Activer le support JSONPnon coché

Onglet Projets

ChampValeur
Définir les nouveaux projets comme publics par défautdécoché
Modules activés par défautSuivi des demandes, Suivi du temps passé, Wiki, Publication de documents, Publication de fichiers
Trackers par défautAnomalie, Évolution
Rôle donné à un utilisateur non-administrateur qui crée un projetChef de projet

Onglet Utilisateurs

Laisser les valeurs par défaut :

  • Option de notification par défaut : Seulement pour ce que je surveille

  • Fuseau horaire : aucun (basé sur le navigateur)

Onglet Suivi des demandes

ChampValeur
Autoriser les relations entre demandes de différents projetscoché
Fermer les doublons automatiquementcoché
Jours non travailléssamedi, dimanche
Attributs des tâches parentesCalculé à partir des sous-tâches (début, échéance, priorité, % réalisé)

Onglet Suivi du temps

ChampValeur
Champs obligatoires pour les temps passésDemande cochée
Maximum d’heures par jour999 (laisser par défaut)

Onglet Fichiers

Laisser les valeurs par défaut (5120 ko max par fichier, 102400 ko en upload groupé).

Cliquer Sauvegarder après chaque onglet — recharger la page pour vérifier le titre et la langue.


Menu : Administration → Trackers → Nouveau tracker

Pour chaque tracker :

  1. Saisir le nom

  2. Décocher les champs non souhaités dans la section “Champs activés”

  3. Laisser cochés : Assigné à, Version cible, Temps estimé

  4. Sauvegarder

L’ordre d’affichage se règle avec les flèches haut/bas dans la liste des trackers après création.


Statuts : Administration → Statuts des demandes → Nouveau statut
Cocher “Statut fermé” uniquement pour Fermé et Rejeté.

Workflow : Administration → Workflow → sélectionner Tracker = Anomalie, Rôle = Développeur → Modifier

Dans la matrice, cocher les cases correspondant aux transitions autorisées (lignes = statut courant, colonnes = statut cible) :

NouveauEn coursEn attente clientRésoluFerméRejeté
Nouveau
En cours
En attente client
Résolu

Sauvegarder, puis vérifier en se connectant avec dev.martin et en changeant le statut d’une demande.


Menu : Administration → Rôles et permissions → Nouveau rôle

Permissions clés à cocher par rôle :

Chef de projet

  • Gestion du projet : Gérer les membres, Gérer les versions

  • Suivi des demandes : Voir, Créer, Modifier, Supprimer, Gérer les catégories

  • Suivi du temps : Voir les entrées de temps (tous les utilisateurs), Saisir les temps

Développeur

  • Suivi des demandes : Voir, Créer, Modifier ses propres demandes

  • Suivi du temps : Saisir les temps, Voir ses propres entrées

Client

  • Suivi des demandes : Voir, Créer uniquement

  • Suivi du temps : aucune permission


Menu : Administration → Utilisateurs → Nouveau utilisateur

Pour chaque compte :

  1. Renseigner Login, Prénom, Nom, Email (fictif)

  2. Définir un mot de passe temporaire (ex : Formation2026!)

  3. Cocher Doit changer son mot de passe à la prochaine connexion

  4. Statut : Actif

  5. Sauvegarder

Vérifier dans Administration → Utilisateurs que les 3 comptes apparaissent avec le statut “Actif”.


Menu : Administration → Activités (suivi du temps) → Nouvelle activité

Pour chaque activité : saisir le nom, laisser “Active” coché.

Définir “Développement” comme activité par défaut (cocher la case correspondante).

Vérifier en allant sur un projet → Suivi du temps → Nouvelle entrée : la liste déroulante “Activité” doit afficher les 5 entrées.


Exercices avancés


Répéter l’opération pour chaque combinaison Tracker / Rôle :
Administration → Workflow → sélectionner le tracker et le rôle → Modifier

Évolution / Client — seule case à cocher :

Fermé
Résolu

Tâche interne / Client — aucune case cochée (matrice vide).

Astuce : utiliser le bouton Copier du workflow pour dupliquer la configuration d’un rôle vers un autre et n’ajuster que les différences.

Vérification rapide sans changer de session : Administration → Workflow → sélectionner le tracker et le rôle → Consulter (mode lecture seule).


Réponse attendue à l’étape 2 (création de demande) :

{
  "issue": {
    "id": 42,
    "project": {"id": 1, "name": "Formation Redmine"},
    "tracker": {"id": 1, "name": "Anomalie"},
    "status": {"id": 1, "name": "Nouveau"},
    "priority": {"id": 2, "name": "Normale"},
    "subject": "Anomalie creee via API"
  }
}

Réponse attendue à l’étape 4 : code HTTP 200 OK — corps vide. Vérifier dans l’interface que le statut est bien “En cours” et que la note apparaît dans l’historique.

Erreurs fréquentes :

  • 401 Unauthorized → clé API incorrecte ou API REST non activée

  • 422 Unprocessable Entity → champ obligatoire manquant (vérifier tracker_id, subject)

  • 404 Not Foundproject_id ou issue id incorrect

Récupérer les tracker_id de votre instance :

curl -H "X-Redmine-API-Key: VOTRE_CLE_API" `
     http://localhost:3000/trackers.json

Correspondance colonnes CSV → champs Redmine :

Colonne CSVChamp Redmine
loginIdentifiant
firstnamePrénom
lastnameNom
mailEmail
passwordMot de passe

Rapport d’import attendu : 10 utilisateurs importés, 0 erreur

Erreur login dupliqué : Redmine affiche Identifiant déjà pris sur la ligne en doublon — les autres lignes sont importées normalement.

Erreur mail manquant : Redmine affiche Email n'est pas valide — la ligne est ignorée.

Après correction du CSV, ré-importer uniquement la ligne corrigée pour éviter les doublons sur les autres comptes.

Vérifier via Administration → Utilisateurs : filtrer par date de création pour isoler les comptes importés.


Menu : Administration → Champs personnalisés → Nouveau champ → sélectionner “Demandes”

Environnement

  • Format : Liste

  • Valeurs possibles : saisir chaque valeur sur une ligne séparée (Développement, Recette, Pré-production, Production)

  • Cocher les trackers : Anomalie, Demande de service

  • Requis : oui — Valeur par défaut : Développement

Référence client

  • Format : Texte

  • Longueur max : 20

  • Expression régulière : ^[A-Z]{2}-[0-9]{4,6}$

  • Cocher les trackers : Anomalie, Évolution, Demande de service

  • Visibilité : restreindre aux rôles Chef de projet et Client

Criticité métier

  • Format : Booléen

  • Cocher le tracker : Anomalie uniquement

  • Cocher Utilisé comme filtre

Message d’erreur attendu pour ABC dans Référence client : Référence client n'est pas valide

Utilisation du filtre : dans la liste des demandes → Ajouter un filtre → Criticité métier → Oui


Livrable M1 — Vérification croisée

Durée : 20 min

Chaque stagiaire joue le rôle d’un auditeur et vérifie l’instance d’un autre à l’aide de la check-list :

Résultat attendu : check-list complète à vert — instance prête pour M2 et M3