常德网站制作建设,惠州房地产网站开发,上海有名的公司,青岛市建设监理网站#x1f4e2;欢迎点赞 #xff1a;#x1f44d; 收藏 ⭐留言 #x1f4dd; 如有错误敬请指正#xff0c;赐人玫瑰#xff0c;手留余香#xff01;#x1f4e2;本文作者#xff1a;由webmote 原创#x1f4e2;作者格言#xff1a;新的征程#xff0c;我们面对的不是… 欢迎点赞 收藏 ⭐留言 如有错误敬请指正赐人玫瑰手留余香本文作者由webmote 原创作者格言新的征程我们面对的不是技术而是人心人心不可测海水不可量唯有技术才是深沉黑夜中的一座闪烁的灯塔 序言
当格陵兰岛的雪山上还在漫天飞雪时我已经安静的坐在空调房里吹起了冰爽的风。为了满足组内的代码仓库实时编译的需求我不得不部署了N个gitlab runner来实现代码的编译工作。
当然编译代码是个很简单的事情只需要我们了解我们的代码类型然后选择适合他们的编译命令即可。
而难住我的不是这个而是子模块的下载。
1. 拉取子模块 什么是git子模块 子模块就是允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中同时还保持提交的独立。为了拉取子模块我们需要在流水线里配置子模块相关的变量即可主要是.gitmodules文件,具体内容可以参考第三节。
如下所示是ci的配置
variables:GIT_SUBMODULE_STRATEGY: normalGIT_SUBMODULE_DEPTH: 1这样的配置就是在告诉Gitlab的runner在拉取代码时顺便拉取下子模块。
2. 自签名问题
碰到的第一个问题就是因为我采用了https方式部署的gitlab而签名证书使用的是自签名证书那反馈的问题也是自签名不识别。
Synchronizing submodule url for apiserver
Cloning into E:/GitLab-Runner/builds/BXnNsKsZ/0/apiserver...
fatal: unable to access https://192.168.1.185/apiserver.git/: SSL certificate problem: self signed certificate要解决自签名我们需要登录到runner运行的服务器配置证书。 这里分两种情况windows runner 和 docker runner
2.1 windows runner
1.在Git Bash 窗口键入 git config –list 查看证书地址找Http.sslcainfo 2.增加git证书到这个证书内
$ cat d:/WorkSpace/git.crt d:/Program Files (x86)/Git/mingw64/ssl/certs/ca-bundle.crt注意 d:/WorkSpace/git.crt 是我的证书放的位置你更换成你的地址即可。
2.2 docker下的runner
docker下运行runner一般会映射一个配置目录如下
docker run -d --name gitlab-runner2 --restart always -v /home/gitrunner/config2:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock runnerwithcert:latest
如果是这样就可以修改config.toml文件了。
$ cat config.toml
# 以下是文件内容
concurrent 1
check_interval 0
shutdown_timeout 0[session_server]session_timeout 1800[[runners]]name runnerurl https://192.168.1.185/id 3 token_obtained_at 2023-03-16T06:48:52Ztoken_expires_at 0001-01-01T00:00:00Ztls-ca-file /etc/gitlab-runner/git.crtexecutor docker[runners.cache]MaxUploadedArchiveSize 0[runners.docker]tls_verify falseimage maven:latestprivileged falsedisable_entrypoint_overwrite falseoom_kill_disable falsedisable_cache falsevolumes [/cache]shm_size 0
这里主要增加配置项 tls-ca-file 和 tls_verify false。
3. 配置子模块为相对位置
经过这些操作后依然会有错误那么这里主要是认证错误如下
fatal: could not read Username for https://192.168.1.185: No such device or address这里需要考虑子模块配置修改为相对路径。 修改。gitmodules 文件代码如下
[submodule src/views/abc]path src/views/abc# url https://192.168.1.185/abc.giturl ../abc.gitbranch main
依据仓库的位置修改url为合适的相对路径。
如果出现类似这样的错误大概率是路径设置错了。
fatal: unable to update url base from redirection:asked for: https://gitlab-ci-token:[MASKED]192.168.1.185/abc.git/info/refs?servicegit-upload-packredirect: https://192.168.1.185/users/sign_in4. 增加拉取子模块的权限
虽然我们配置了上述步骤依然在ci运行后得到了错误这个时候就是考研耐心的时候我们还有重要的一步需要去做。 对照错误如下
remote: The project you were looking for could not be found or you dont have permission to view it.因为ci使用 gitlab-ci-token进行拉取仓库因此必须给予权限才能拉取到子模块。 我们在gitlab内导航到配置页面仓库页面的设置 CI/CD, 在输入框内填入项目名称然后点击 增加项目就可以给予权限了。
什么添加不上去
这个地址是有格式要求的哎就是项目顶端的导航例如
某项目是: A B Cd 那么我们就输入 A\B\C\d 就可以了。注意不要有空格有空格也不认识。
再次运行ci如果能看到如下内容就配置成功了
Updating/initializing submodules with git depth set to 1...
Synchronizing submodule url for abc
Entering abc结语
反正自己走过的弯路就不希望其他人再走了技术分享就是这么纯粹
都看到这了还在乎点个赞吗
都点赞了还在乎一个收藏吗
都收藏了还在乎一个评论吗