Gitlab 仓库管理工具 2022-08-22 09:46 • 阅读:次 ### GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab是目前被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对group和project两个维度进行代码和文档管理, 其中group是群组, project是工程项目, 一个group可以管理多个project, 可以理解为一个群组中有多项软件开发任务, 而一个project中可能包含多个branch, 意为每个项目中有多个分支, 分支间相互独立, 不同分支可以进行归并。 ------------ ### 安装 > 安装依赖 ``` yum install -y curl policycoreutils-python openssh-server // 安装依赖 centos8没有policycoreutils-python yum源,不用管 ``` > 下载Gitlab ``` https://mirrors.tuna.tsinghua.edu.cn/gitlab-ee/yum/el7/gitlab-ee-12.3.5-ee.0.el7.x86_64.rpm wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el8/gitlab-ce-12.10.1-ce.0.el8.x86_64.rpm wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm ``` > 安装 ``` rpm -i gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm 看到成功提示 ``` > 卸载 ```bash gitlab-ctl stop rpm -e gitlab-ce ps aux | grep gitlab sudo find / -name gitlab | xargs sudo rm -rf ``` > 安装中文语言包 ``` wget https://gitlab.com/xhang/gitlab/-/archive/v12.3.5-zh/gitlab-v12.3.5-zh.tar.gz // 下载 tar zxvf gitlab-v12.3.5-zh.tar.gz // 解压 mv gitlab-v12.3.5-zh gitlab \cp -rf ./gitlab/* /opt/gitlab/embedded/service/gitlab-rails/ // 安装 重新生成配置文件并启动 gitlab-ctl reconfigure gitlab-ctl start ``` > 配置IP和端口 ``` vim /etc/gitlab/gitlab.rb // 编辑此文件 external_url = '' // 设置你的域名 nginx['listen_port'] = 800 // 找到取消注释,修改端口 ``` > 编辑完配置文件需要执行 ``` gitlab-ctl reconfigure gitlab-ctl restart|stop|start // 管理服务 gitlab-ctl tail ``` > 安装完成 ``` 访问自己的配置的地址 配置新的密码 ``` ## 创建项目 > 添加项目 ``` 1. 点击左上角(Project) 里边 Your project 2. 右边的New project 3. 输入(Project name) 项目名称 , 选择私有还是公开 ``` > 生成SSH Keys ``` ssh-keygen // 如果不设置密码 一直回车就行 ssh-keygen -t rsa -C "your_email@example.com" 查看 ~/.ssh/id_rsa.pub // 复制里边的内容 ``` > 添加SSH Keys ``` 0. 1. 点击右边头像位置(Settings) 2. 点击左边 SSH Keys 3. 把~/.ssh/id_rsa.pub 里的内容复制进去 保存 ``` > 设置自动拉取最新代码 > > 1. 点击左上角(Project) 里边 Your project > > 2. 点击任意一个项目进去 > > 3. 左边 Seetings 里的 Webhooks > > 4. 编辑脚本 (在一个能访问到的地方)例如:项目的根目录 > > ``` > //网站目录 > $www_file='/home/www/test/'; > > //打开网站目录下的hooks.log文件,需要在服务器上创建,并给写权限 > $fs = fopen('/home/www/test/hooks.log', 'a'); > > fwrite($fs, '================ Update Start ==============='.PHP_EOL.PHP_EOL); > > //自定义字串掩码 用于验证 > $access_token = 'QhNO8YHqym5PHQQsexapF7041xOhzm62DRH'; > > //接受的ip数组,也就是允许哪些IP访问这个文件 这里是gitlab服务器IP > $access_ip = array('192.168.1.15','14.xxx.xxx.19'); > > //如果使用www.xxx.com/xxx.php?token=xxxxxxx 的方式来传送验证字符串,则用这个方法获取 > # $client_token = $_GET['token']; > > // 获取请求端的secret token > $client_token = $_SERVER["HTTP_X_GITLAB_TOKEN"]; > > //获取请求端的IP > $client_ip = $_SERVER['REMOTE_ADDR']; > > //把请求的IP和时间写进log > fwrite($fs, 'Request on ['.date("Y-m-d H:i:s").'] from ['.$client_ip.']'.PHP_EOL); > > //验证token 有错就写进日志并退出 > if ($client_token !== $access_token) > { > echo "error 403"; > fwrite($fs, "Invalid token [{$client_token}]".PHP_EOL); > exit(0); > } > > //验证ip > if ( !in_array($client_ip, $access_ip)) > { > echo "error 503"; > fwrite($fs, "Invalid ip [{$client_ip}]".PHP_EOL); > exit(0); > } > > //获取请求端发送来的信息,具体格式参见gitlab的文档 > $json = file_get_contents('php://input'); > $data = json_decode($json, true); > > //如果有需要 可以打开下面,把传送过来的信息写进log > # fwrite($fs, 'Data: '.print_r($data, true).PHP_EOL); > > //执行shell命令并把返回信息写进日志 > $output=shell_exec("cd $www_file && git pull 2>&1"); > fwrite($fs, 'Info:'. $output.PHP_EOL); > > fwrite($fs,PHP_EOL. '================ Update End ==============='.PHP_EOL.PHP_EOL); > > $fs and fclose($fs); > > ?> > ``` > > 5. 复制自己的url地址到URL > > 6. Token 自己设置一定要跟文件里的一样 > > 7. Trigger 默认选中第一个 点击 Add webhook > > 8. 添加完之后点击 (Test)看看是否成功 ## 克隆项目 ``` git@gitlab.xxx.com:xxx/test.git // 点击克隆是这样的地址 克隆时需要修改 git clone ssh://git@gitlab.xxx.com:xxx:port/xxx/test.git // 端口默认是22 如果ssh端口不是22需要增加端口 gitlab.xxx.com // 是配置文件里的 vim /etc/gitlab/gitlab.rb 》external_url = '' // 设置你的域名 xxx // 是你的用户 test.git // 是你的项目名称 ```