Wie man ein Gitlab-Git-Repository in Redmine integriert
Einrichten der Redmine-Git-Infrastruktur

- Kopieren Sie den Access-Token in Ihre Zwischenablage und speichern Sie ihn an einem sicheren Ort. Sie werden ihn nicht wieder sehen können.

Das Folgende basiert auf Redmine docker-compose Konfiguration mit Traefik & Let’s Encrypt
- Erstellen Sie ein neues Verzeichnis, um Git-Repositories für Ihre Redmine-Instanz zu speichern.
mkdir redmine_git- Fügen Sie dies zur
docker-compose.ymlhinzu, damit es im Container gemappt wird
services:
redmine:
# ...
volumes:
# ...
- './redmine_git:/git'Klonen eines Gitlab-Repositories in Redmine
Wiederholen Sie dies für jedes Repository, das Sie in Redmine integrieren möchten.
- Öffnen Sie in Gitlab das Projekt und gehen Sie zu
Settings->Access Tokens - Erstellen Sie einen
Access Tokenmit den folgenden Einstellungen:- Sie können ihn
Redminenennen, aber der Name spielt keine Rolle, fühlen Sie sich frei, einen anderen Namen zu wählen. - Als
Rolewählen SieDeveloper - Als
Expiration Dateempfehle ich, den Wert durch Klicken auf dasx-Symbol zu löschen, damit der Token nie abläuft. Andernfalls müssten Sie regelmäßig Token für alle Repositories neu erstellen. - Als
Scopeswählen Sieread_repositoryund nichts anderes.
- Sie können ihn
- Gehen Sie nun zur Projektseite auf Gitlab und kopieren Sie die Git-URL, z.B.
https://gitlab.mydomain.com/myuser/MyProject.git - Bearbeiten Sie diese URL und fügen Sie
username:password@nachhttps://hinzu, wobei der Benutzername der Name des Tokens (z.B.Redmine) und das Passwort der zuvor kopierte Token ist.
https://Redmine:glpat-LbxcydI0fNXfS9m6JMkK@gitlab.mydomain.com/myuser/MyProject.git- Klonen Sie nun diese URL als Mirror-Repository in das Verzeichnis
redmine_git
cd redmine_git
git clone --mirror https://Redmine:glpat-LbxcydI0fNXfS9m6JMkK@gitlab.mydomain.com/myuser/MyProject.git- Navigieren Sie in Redmine zum Projekt, in das Sie das Repository integrieren möchten, gehen Sie zu
Settings->Repositoriesund klicken Sie aufNew Repository:

- Geben Sie den Pfad zum Repository ein, z.B.
/git/MyProject.gitund einen neuen Identifikator der nur Kleinbuchstaben, Zahlen und Unterstriche enthalten darf. Dieser Identifikator wird verwendet, um das Repository in Redmines Datenbank zu referenzieren.

- Klicken Sie auf
Createund Sie sind fertig!
Einrichten des automatischen Repository-Fetch
Redmine unterstützt derzeit nicht das automatische Abrufen von Repositories. Sie können einen Cronjob einrichten, um Repositories alle 5 Minuten abzurufen.
Ich empfehle, dafür SystemD-Timer zu verwenden, da sie zuverlässiger und generell flexibler als Cronjobs sind.
Erstellen Sie in dem Verzeichnis, in dem sich redmine_git befindet, eine neue Datei setup-git-fetch.sh, die das Fetch-Skript und den Timer einrichtet:
#!/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
# Enable and start service
systemctl enable --now ${NAME}.timerFühren Sie dieses Skript aus dem Verzeichnis aus, in dem sich redmine_git befindet:
sudo bash setup-git-fetch.shDieses Skript richtet einen SystemD-Service und Timer ein, der alle 2 Minuten alle Repositories in redmine_git abruft.