如何将 Gitlab Git 仓库集成到 Redmine

设置 Redmine Git 基础设施

Redmine Git Project Access Token

Gitlab Copy Access Token

以下基于带 Traefik 和 Let’s Encrypt 的 Redmine docker-compose 配置

create_redmine_git_dir.sh
mkdir redmine_git
docker-compose.yml
services:
  redmine:
    # ...
    volumes:
      # ...
      - './redmine_git:/git'

将 Gitlab 仓库克隆到 Redmine

对每个要集成到 Redmine 的仓库重复此操作。

repository_clone_url.txt
https://Redmine:[email protected]/myuser/MyProject.git
mirror_clone_repository.sh
cd redmine_git
git clone --mirror https://Redmine:[email protected]/myuser/MyProject.git

Redmine Settings Repositories

Redmine Create New Repository

设置自动仓库获取

Redmine 目前不支持自动获取仓库。你可以设置一个 cronjob 每 5 分钟获取仓库。

我建议使用 SystemD 定时器,因为它们比 cronjob 更可靠且通常更灵活。

redmine_git 所在的目录中,创建一个新文件 setup-git-fetch.sh,它设置获取脚本和定时器:

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

# Enable and start service
systemctl enable --now ${NAME}.timer

redmine_git 所在的目录运行该脚本:

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

此脚本设置一个 SystemD 服务和定时器,每 2 分钟获取 redmine_git 中的所有仓库。


Check out similar posts by category: Redmine, Git