如何将 Gitlab Git 仓库集成到 Redmine
设置 Redmine Git 基础设施

- 将访问令牌复制到剪贴板并保存在安全的地方。你将无法再次看到它。

以下基于带 Traefik 和 Let’s Encrypt 的 Redmine docker-compose 配置
- 创建一个新目录来存放你的 Redmine 实例的 Git 仓库。
create_redmine_git_dir.sh
mkdir redmine_git- 将其添加到
docker-compose.yml中,使其映射到容器内
docker-compose.yml
services:
redmine:
# ...
volumes:
# ...
- './redmine_git:/git'将 Gitlab 仓库克隆到 Redmine
对每个要集成到 Redmine 的仓库重复此操作。
- 在 Gitlab 中,打开项目并转到
Settings->Access Tokens - 创建具有以下设置的
Access Token:- 你可以将其命名为
Redmine,但名称无关紧要,因此可以自由选择任何其他名称。 - 作为
Role,选择Developer - 作为
Expiration Date,我建议通过点击x图标删除该值,这样令牌永不过期。否则,你必须定期为所有仓库重新创建令牌。 - 作为
Scopes,选择read_repository,不要选择其他。
- 你可以将其命名为
- 现在转到 Gitlab 上的项目页面并复制 Git URL,例如
https://gitlab.mydomain.com/myuser/MyProject.git - 编辑该 URL 并在
https://之后添加username:password@,其中 username 是令牌的名称(例如Redmine),password 是你之前复制的令牌。
repository_clone_url.txt
https://Redmine:[email protected]/myuser/MyProject.git- 现在将该 URL 作为镜像仓库克隆到
redmine_git目录中
mirror_clone_repository.sh
cd redmine_git
git clone --mirror https://Redmine:[email protected]/myuser/MyProject.git- 在 redmine 中,导航到要集成仓库的项目,进入
Settings->Repositories并点击New Repository:

- 输入仓库的路径,例如
/git/MyProject.git,以及一个新标识符只能包含小写字母、数字和下划线。此标识符用于在 Redmine 数据库中引用仓库。

- 点击
Create,你就完成了!
设置自动仓库获取
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 中的所有仓库。
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow