Wie man ein Gitlab-Git-Repository in Redmine integriert

Einrichten der Redmine-Git-Infrastruktur

Redmine Git Project Access Token

  • Kopiere den Access-Token in deine Zwischenablage und speichere ihn an einem sicheren Ort. Du wirst ihn nicht wieder sehen können.

Gitlab Copy Access Token

Das Folgende basiert auf Redmine docker-compose Konfiguration mit Traefik & Let’s Encrypt

  • Erstelle ein neues Verzeichnis, um Git-Repositories für deine Redmine-Instanz zu speichern.
create_redmine_git_dir.sh
mkdir redmine_git
  • Füge dies zur docker-compose.yml hinzu, damit es im Container gemappt wird
docker-compose.yml
services:
  redmine:
    # ...
    volumes:
      # ...
      - './redmine_git:/git'

Klonen eines Gitlab-Repositories in Redmine

Wiederhole dies für jedes Repository, das du in Redmine integrieren möchtest.

  • Öffne in Gitlab das Projekt und gehe zu Settings -> Access Tokens
  • Erstelle einen Access Token mit den folgenden Einstellungen:
    • Du kannst ihn Redmine nennen, aber der Name spielt keine Rolle, fühle dich frei, einen anderen Namen zu wählen.
    • Als Role wähle Developer
    • Als Expiration Date empfehle ich, den Wert durch Klicken auf das x-Symbol zu löschen, damit der Token nie abläuft. Andernfalls müsstest du regelmäßig Token für alle Repositories neu erstellen.
    • Als Scopes wähle read_repository und nichts anderes.
  • Gehe nun zur Projektseite auf Gitlab und kopiere die Git-URL, z.B. https://gitlab.mydomain.com/myuser/MyProject.git
  • Bearbeite diese URL und füge username:password@ nach https:// hinzu, wobei der Benutzername der Name des Tokens (z.B. Redmine) und das Passwort der zuvor kopierte Token ist.
repository_clone_url.txt
https://Redmine:glpat-LbxcydI0fNXfS9m6JMkK@gitlab.mydomain.com/myuser/MyProject.git
  • Klone nun diese URL als Mirror-Repository in das Verzeichnis redmine_git
mirror_clone_repository.sh
cd redmine_git
git clone --mirror https://Redmine:glpat-LbxcydI0fNXfS9m6JMkK@gitlab.mydomain.com/myuser/MyProject.git
  • Navigiere in Redmine zum Projekt, in das du das Repository integrieren möchtest, gehe zu Settings -> Repositories und klicke auf New Repository:

Redmine Settings Repositories

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

Redmine Create New Repository

  • Klicke auf Create und du bist fertig!

Einrichten des automatischen Repository-Fetch

Redmine unterstützt derzeit nicht das automatische Abrufen von Repositories. Du kannst 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.

Erstelle in dem Verzeichnis, in dem sich redmine_git befindet, eine neue Datei setup-git-fetch.sh, die das Fetch-Skript und den Timer einrichtet:

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

# Service aktivieren und starten
systemctl enable --now ${NAME}.timer

Führe dieses Skript aus dem Verzeichnis aus, in dem sich redmine_git befindet:

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

Dieses Skript richtet einen SystemD-Service und Timer ein, der alle 2 Minuten alle Repositories in redmine_git abruft.


Ähnliche Beiträge nach Kategorie: Redmine Git