自建GitLab实际应用与踩坑:云团子ICP备案系统

GitHub上的是免费版,GitLab上的是全功能版

https://gitlab.biliwind.com/yuncheng/tuanicp

起初,这个项目只有团子一个人在维护,但是某一次我发现了团子的站点重定向有bug,我就顺手给修了,之后我开始翻团子的代码,突然想起来他还有个TuanICP的项目,然后我就开始修漏洞,加功能,现在我也加进这个项目维护了

至于我干了点啥…

原本的后台是这样的

现在是这样的

虽说不能说有多好看,但是最起码比以前的功能多了,也好看了一些

正巧我的服务器上还有自己的GitLab,那干脆就做一套CI/CD(持续集成、持续部署)吧

CI/CD有一个很重要的东西是runner,所有的脚本、构建等都在runner上执行,我的runner有5个,在中国大陆、中国香港、美国、都有,如果你只是临时跑个什么高配置要求的东西,例如编译个内核什么的,完全可以低价“租”一台高配runner,我目前只发现雨云一家可以这样干

按照原价算出来,一天要6块钱的服务器可以1元试用,如果有特殊需求,你甚至可以试用带显卡的服务器

看得出来雨云非常的良心,性价比甚至要高过腾讯云、阿里云这些大厂的按量付费实例

踩坑、误区解释

自带的编辑器

GitLab自带一个WebIDE,打开之后是一个经过一些定制的vscode网页版,但是需要注意的是,自带的IDE仅推荐临时写代码使用,不建议编辑过多的文件,否则当心会卡

这个也可以作为一个上传文件的渠道来使用,只需要把本地的文件拖进去,再用它自带的git提交就可以,对新手来说非常友好,只需要点一下就可以完成提交

但是这个IDE也有一些小bug,例如有时候渲染的光标和实际光标位置不一样,错位很多

千万不要用它上传太多的文件!!!

自动部署

自动部署使用了宝塔和gitlab的webhook功能,在网上找了一段脚本:

#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then
          echo "param参数错误"
          echo "End"
          exit
fi
#git项目路径
gitPath="/www/wwwroot/icp.yuncheng.fun"
#git 网址
gitHttp="https://gitlab.biliwind.com/yuncheng/tuanicp.git"
 	
echo "Web站点路径:$gitPath"
 
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                git clone $gitHttp gittemp
                mv gittemp/.git .
				rm -rf gittemp
        fi
        #拉取最新的项目文件
        sudo git reset --hard origin/master
        sudo git pull
        #设置目录权限
        sudo chown -R www:www $gitPath
        echo "End1"
        exit
else
        echo "该项目路径不存在"
        echo "End"
        exit
		
fi

在宝塔添加脚本后需要在gitlab也配置,调用地址是这里点进去官方给出的地址

至于触发条件,我选的是有提交就部署到服务器

这样做并不会消耗太多服务器的带宽,甚至比你自己手动上传还要节省带宽,因为git只会同步有更改的文件,没有更改的不会下载