首页 » 未分类 » 正文

禅道服务器远程集成另一台远程Git服务器

发布者:某某人
2014/04/16 浏览数(120) 分类:未分类 暂无评论

概要

禅道服务器一台,Git服务器一台。禅道服务器集成Git、关联Git服务器的提交日志。

方法为:在禅道上也装一个git服务器,gitServer把代码 push 过来,两台服务器都同时有服务端和客户端。

下文中 zentaoServer 代表禅道服务器,gitServer 代表 git server。

zentaoServer 安装 git server

生成 ssh-key

ssh-keygen
cat id_rsa.pub >> ~/.ssh/authorized_keys
scp -P 22 id_rsa root@gitServer:/home/git/ # gitServer 用这个私钥 push 过来代码

添加 git 登录权限

sudo adduser -s /usr/bin/git-shell git

初始化 git 库

cd /data/git/
mkdir project.git
cd project.git
git --bare init
sudo chown git:git /data/git -R

最终接收git提交的库的地址为:

ssh://git@zentaoServer:22/data/git/project.git

将 zentaoServer 上的库 clone 到禅道的目录中

cd /data/web/zentaoServer
mkdir git && cd git
git clone /data/git/project.git # 把 gitServer push 过来的代码 pull 出来备用

启用禅道的Git集成功能

编辑 /data/web/zentaoServer/public_html/module/git/config.php,修改为:

// ...
$config->git->client    = '/usr/bin/git';

$i = 1;
$config->git->repos[$i]['path']     = '/data/web/zentaoServer/git/project';
$config->git->repos[$i]['encoding'] = 'utf-8';
// ...

编辑 /data/web/zentaoServer/public_html/bin/syncgit.sh,内容如下:

#!/bin/bash                                                                                                                                
echo ''
echo '>>>> Start: '`date`
cd /data/web/zentaoServer/git/project
git pull
/data/web/zentaoServer/public_html/bin/ztcli 'http://zentaoServer/index.php?m=git&f=run'
echo '<<<< End: '`date`

禅道集成git的官方方法在这里,如果找不到 syncgit.sh 可以去看看。

定时从 git 库中取出提交日志给禅道

# crontab -e
# 分 时 日 月 周 用户 命令
*/5 *  *  *  *      /data/web/zentaoServer/public_html/bin/syncgit.sh >> /var/log/zentao_git.log 2>&1

gitServer push 代码给 zentaoServer

配置 push 给 zentaoServer 的权限

cd /home/git
mv id_rsa .ssh/ # 配置 zentaoServer 时 scp 过来的有私钥

更新并测试待提交的本地库

yum install git -y
mkdir /data/git4zentao
cd /data/git4zentao
git clone http://gitServer/project.git
git remote add zentao ssh://git@zentaoServer:22/data/git/project.git
git push zentao

编辑 /data/git4zentao/push2zentao.sh,内容如下:

:: 这是给 windows 弄的,linux 需要根据逻辑自行转换编程语言
@echo off
:: 禅道集成git需要从git库里取日志
setlocal
set workDir=D:\git4zentao
cd /d %workDir%\ycdj_pc_front
echo ^>^>^>^> Start: %date% %time%     >> %workDir%\push2zentao.log 2>&1
git fetch origin                       >> %workDir%\push2zentao.log 2>&1
git checkout master                    >> %workDir%\push2zentao.log 2>&1
git branch -D develop                  >> %workDir%\push2zentao.log 2>&1
git checkout -b develop origin/develop >> %workDir%\push2zentao.log 2>&1
git pull                               >> %workDir%\push2zentao.log 2>&1
echo.                                  >> %workDir%\push2zentao.log 2>&1
git push zentao -f                     >> %workDir%\push2zentao.log 2>&1
echo.                                  >> %workDir%\push2zentao.log 2>&1
echo %date% %time%                     >> %workDir%\push2zentao.log 2>&1
echo ^<^<^<^< End: %date% %time%       >> %workDir%\push2zentao.log 2>&1
echo.                                  >> %workDir%\push2zentao.log 2>&1
exit

添加定时任务

通过 crontab 或 计划任务,每5分钟执行一次 push2zentao.sh

— 完 —

gitServer 上导出的 windows 计划任务“PushProjectToZentao”在这里:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2019-01-26T11:31:23.1146774</Date>
    <Author>VM-TFS\Administrator</Author>
    <Description>禅道集成git需要从git库里取日志。
push2zentao.bat 负责同步最新库后push给禅道</Description>
    <URI>\PushYCDJToZentao</URI>
  </RegistrationInfo>
  <Triggers>
    <CalendarTrigger>
      <Repetition>
        <Interval>PT5M</Interval>
        <Duration>P1D</Duration>
        <StopAtDurationEnd>true</StopAtDurationEnd>
      </Repetition>
      <StartBoundary>2019-01-26T00:00:00</StartBoundary>
      <Enabled>true</Enabled>
      <ScheduleByDay>
        <DaysInterval>1</DaysInterval>
      </ScheduleByDay>
    </CalendarTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-21-2133515309-2052718937-1146641456-500</UserId>
      <LogonType>S4U</LogonType>
      <RunLevel>LeastPrivilege</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>D:\git4zentao\push2zentao.bat</Command>
    </Exec>
  </Actions>
</Task>

暂时木有评论啊,等您坐沙发呢!

发表评论

点击返回顶部
  1. 留言
  2. 联系方式