Jak integrovat Git repozitář Gitlab do Redmine

Nastavení Redmine Git infrastruktury

Redmine Git přístupový token projektu

  • Zkopírujte přístupový token do vaší schránky a uložte ho někde bezpečně. Už ho znovu neuvidíte.

Gitlab kopírovat přístupový token

Následující je založeno na konfiguraci Redmine docker-compose s Traefik & Let’s Encrypt

  • Vytvořte nový adresář pro Git repozitáře pro vaši Redmine instanci.
create_redmine_git_dir.sh
mkdir redmine_git
  • Přidejte to do docker-compose.yml aby to bylo mapováno uvnitř kontejneru
docker-compose.yml
services:
  redmine:
    # ...
    volumes:
      # ...
      - './redmine_git:/git'

Klonování Gitlab repozitáře do Redmine

Opakujte to pro každý repozitář, který chcete integrovat do Redmine.

  • V Gitlab, otevřete projekt a jděte na Nastavení -> Přístupové tokeny
  • Vytvořte Přístupový token s následujícím nastavením:
    • Můžete ho pojmenovat Redmine, ale název nezáleží, takže klidně zvolte jakékoliv jiné jméno.
    • Jako Role, vyberte Vývojář
    • Jako Datum vypršení, doporučuji smazat hodnotu kliknutím na x ikonu, aby token nikdy nevypršel. Jinak byste museli pravidelně znovu vytvářet tokeny pro všechny repozitáře.
    • Jako Rozsahy, vyberte read_repository a nic jiného.
  • Nyní jděte na stránku projektu na Gitlab a zkopírujte Git URL, např. https://gitlab.mydomain.com/myuser/MyProject.git
  • Upravte to URL a přidejte username:password@ po https:// s uživatelským jménem jako názvem tokenu (např. Redmine) a heslem jako tokenem, který jste zkopírovali dříve.
repository_clone_url.txt
https://Redmine:glpat-LbxcydI0fNXfS9m6JMkK@gitlab.mydomain.com/myuser/MyProject.git
  • Nyní klonujte to URL jako zrcadlový repozitář do redmine_git adresáře
mirror_clone_repository.sh
cd redmine_git
git clone --mirror https://Redmine:glpat-LbxcydI0fNXfS9m6JMkK@gitlab.mydomain.com/myuser/MyProject.git
  • V redmine, navigujte do projektu, do kterého chcete integrovat repozitář, jděte do Nastavení -> Repozitáře a klikněte na Nový repozitář:

Redmine nastavení repozitářů

  • Zadejte cestu k repozitáři, např. /git/MyProject.git a nový identifikátor který může obsahovat pouze malá písmena, čísla a podtržítka. Tento identifikátor se používá pro odkazování na repozitář v databázi Redmine.

Redmine vytvořit nový repozitář

  • Klikněte na Vytvořit a jste hotovi!

Nastavení automatického stahování repozitáře

Redmine aktuálně nepodporuje automatické stahování repozitářů. Můžete nastavit cron úlohu pro stahování repozitářů každých 5 minut.

Doporučuji použít SystemD časovače pro to, protože jsou spolehlivější a obecně flexibilnější než cron úlohy.

V adresáři, kde redmine_git sídlí, vytvořte nový soubor setup-git-fetch.sh, který nastaví stahovací skript a časovač:

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

# Povolit a spustit službu
systemctl enable --now ${NAME}.timer

Spusťte ten skript z adresáře, kde redmine_git sídlí:

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

Tento skript nastaví SystemD službu a časovač, který stahuje všechny repozitáře v redmine_git každé 2 minuty.


Podívejte se na podobné články podle kategorie: Redmine Git