Nastavení Redmine Git infrastruktury
- Zkopírujte přístupový token do vaší schránky a uložte ho někde bezpečně. Už ho znovu neuvidíte.
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.ymlaby 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ý tokens 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, vyberteVývojář - Jako
Datum vypršení, doporučuji smazat hodnotu kliknutím naxikonu, aby token nikdy nevypršel. Jinak byste museli pravidelně znovu vytvářet tokeny pro všechny repozitáře. - Jako
Rozsahy, vyberteread_repositorya nic jiného.
- Můžete ho pojmenovat
- 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@pohttps://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_gitadresář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ářea klikněte naNový repozitář:
- Zadejte cestu k repozitáři, např.
/git/MyProject.gita 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.
- Klikněte na
Vytvořita 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}.timerSpusťte ten skript z adresáře, kde redmine_git sídlí:
run_setup_git_fetch.sh
sudo bash setup-git-fetch.shTento skript nastaví SystemD službu a časovač, který stahuje všechny repozitáře v redmine_git každé 2 minuty.
Pokud vám tento článek pomohl, zvažte, zda mi nekoupíte kávu nebo nepřispějete přes PayPal na podporu výzkumu a publikování nových článků na TechOverflow



