Comment intégrer un dépôt Git Gitlab dans Redmine

Configuration de l’infrastructure Redmine Git

Redmine Git jeton d’accès au projet

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

Gitlab copier le jeton d’accès

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.
create_redmine_git_dir.sh
mkdir redmine_git
  • Ajoutez cela au docker-compose.yml pour qu’il soit mappé à l’intérieur du conteneur
docker-compose.yml
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 Token avec 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électionnez Developer
    • Comme Expiration Date, je recommande de supprimer la valeur en cliquant sur l’icône x, 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électionnez read_repository et rien d’autre.
  • 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ès https:// 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.
repository_clone_url.txt
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
mirror_clone_repository.sh
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 -> Repositories et cliquez sur New Repository :

Redmine Paramètres Dépôts

  • Saisissez le chemin vers le dépôt, par ex. /git/MyProject.git et 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.

Redmine Créer un nouveau dépôt

  • Cliquez sur Create et 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 :

setup-git-fetch.sh
#!/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}.timer

Exécutez ce script depuis le répertoire où réside redmine_git :

run_setup_git_fetch.sh
sudo bash setup-git-fetch.sh

Ce script configure un service et un minuteur SystemD qui récupèrent tous les dépôts dans redmine_git toutes les 2 minutes.


Consultez les articles similaires par catégorie : Redmine Git