Configuration de l’infrastructure Redmine Git

- Copiez le jeton d’accès dans votre presse-papiers et sauvegardez-le quelque part en sécurité. Vous ne pourrez plus le revoir.

Ce qui suit est basé sur Configuration docker-compose Redmine avec Traefik & Let’s Encrypt
- Créez un nouveau répertoire pour contenir les dépôts Git pour votre instance Redmine.
mkdir redmine_git- Ajoutez cela au
docker-compose.ymlpour qu’il soit mappé à l’intérieur du conteneur
services:
redmine:
# ...
volumes:
# ...
- './redmine_git:/git'Cloner un dépôt Gitlab dans Redmine
Répétez ceci pour chaque dépôt que vous voulez intégrer dans Redmine.
- Dans Gitlab, ouvrez le projet et allez dans
Settings->Access Tokens - Créez un
Access Tokenavec les paramètres suivants :- Vous pouvez le nommer
Redmine, mais le nom n’a pas d’importance, donc n’hésitez pas à choisir un autre nom. - Comme
Role, sélectionnezDeveloper - Comme
Expiration Date, je recommande de supprimer la valeur en cliquant sur l’icônex, pour que le jeton n’expire jamais. Sinon, vous devriez régulièrement recréer des jetons pour tous les dépôts. - Comme
Scopes, sélectionnezread_repositoryet rien d’autre.
- Vous pouvez le nommer
- Maintenant allez sur la page du projet sur Gitlab et copiez l’URL Git, par ex.
https://gitlab.mydomain.com/myuser/MyProject.git - Éditez cette URL et ajoutez
username:password@aprèshttps://avec username étant le nom du jeton (par ex.Redmine) et le mot de passe étant le jeton que vous avez copié précédemment.
https://Redmine:glpat-LbxcydI0fNXfS9m6JMkK@gitlab.mydomain.com/myuser/MyProject.git- Maintenant clonez cette URL comme un dépôt miroir dans le répertoire
redmine_git
cd redmine_git
git clone --mirror https://Redmine:glpat-LbxcydI0fNXfS9m6JMkK@gitlab.mydomain.com/myuser/MyProject.git- Dans redmine, naviguez jusqu’au projet dans lequel vous voulez intégrer le dépôt, allez dans
Settings->Repositorieset cliquez surNew Repository:

- Saisissez le chemin vers le dépôt, par ex.
/git/MyProject.gitet un nouvel identifiant qui ne peut contenir que des lettres minuscules, des chiffres et des tirets bas. Cet identifiant est utilisé pour référencer le dépôt dans la base de données de Redmine.

- Cliquez sur
Createet vous avez terminé !
Configuration de la récupération automatique du dépôt
Redmine ne supporte actuellement pas la récupération automatique des dépôts. Vous pouvez configurer une tâche cron pour récupérer les dépôts toutes les 5 minutes.
Je recommande d’utiliser les minuteurs SystemD pour cela, car ils sont plus fiables et généralement plus flexibles que les tâches cron.
Dans le répertoire où réside redmine_git, créez un nouveau fichier setup-git-fetch.sh, qui configure le script de récupération et le minuteur :
#!/bin/bash
export NAME=$(basename $(pwd))-gitfetch
cat >/etc/systemd/system/${NAME}.service <<EOF
[Unit]
Description=${NAME}
[Service]
Type=oneshot
ExecStart=/bin/bash -c 'cd redmine_git && for i in *; do [ -d "\$i" ] && cd "\$i" && git fetch --all; cd ..; done'
WorkingDirectory=$(pwd)
EOF
cat >/etc/systemd/system/${NAME}.timer <<EOF
[Unit]
Description=${NAME} timer
[Timer]
OnCalendar=*:0/2
Persistent=true
[Install]
WantedBy=timers.target
EOF
# Activer et démarrer le service
systemctl enable --now ${NAME}.timerExécutez ce script depuis le répertoire où réside redmine_git :
sudo bash setup-git-fetch.shCe script configure un service et un minuteur SystemD qui récupèrent tous les dépôts dans redmine_git toutes les 2 minutes.