一、搭建个人CI
1、创建镜像
注:如果环境上镜像已经创建好了,此步骤可以省略。
个人CI的镜像是基于base:1.0镜像创建的,在原有的镜像基础上增加安装了openssh和go语言远程调试工具dlv
1、创建镜像项目,项目文件包含Dockerfile,dlv文件是在linux环境中编译好的,可以直接复制到容器中使用,start_ssh.sh是为了容器自启动ssh服务
2、下载压缩包,在linux环境上解压文件夹,在文件夹中执行一下构建命令即可创建完成个人CI的容器镜像(前提是环境上已经下载了base:1.0镜像)
docker build . -t personal-ci:1.0-20220428
3、检查镜像
docker images
2、创建容器
创建镜像命令如下
docker run -d -it --name test --privileged=true -p 20022:22 -p 20045:2345 personal-ci:1.0-20220428 /bin/bash
需要修改的地方:
--name:容器名称,可以使用自己的工号作为容器名,方便后续操作。
-p : 端口映射,容器里面有用到ssh的22端口和dlv的2345端口,所以需要映射到linux主机的端口。
注:同一个主机上面会有不同的人使用,所以在使用端口映射时,一定要使用为被使用的端口
查看容器
docker ps |grep test
3、进入容器
docker exec -it test sh
二、远程调试
1、goland设置文件同步
1、打开项目,点击Tool -> Deployment -> Configuration
2、在跳出来的弹框上面点击加号,选择SFTP,并且命名
3、选择SSH Configuration,之前没有创建过,需要创建一下。
创建SSH,Host ip地址是linux主机的地址,port是创建容器时,容器22端口映射在主机上的端口。用户名密码统一是root/onecap_root,点击测试连接,连接成功后,点击ok保存。
选择创建的SSH
设置文件夹映射和自动同步
选择映射在home目录下的同名文件夹(需要自己创建),然后点击OK创建完成
回到项目,选择项目文件夹,点击Tool->Deployment -> Upload to远程容器。第一次同步需要点击upload,之后可以设置文件修改时,保存自动上传。
(注:如果项目比较大,建议打压缩包上传,解压,不然需要耗费很多时间)(注:如果项目比较大,建议打压缩包上传,解压,不然需要耗费很多时间)(注:如果项目比较大,建议打压缩包上传,解压,不然需要耗费很多时间)(注:如果项目比较大,建议打压缩包上传,解压,不然需要耗费很多时间)
2、goland设置远程debug
选择测试用例文件,配置远程调试
填写Name,Host和Port,Host是远程linux主机IP,port是容器2345端口映射的linux主句端口,点击ok成功
3、打断点,调试
1、在测试用例文件和主文件里面设置断点
2、远程到容器,到测试用例所在目录,开启远程调试
执行命令
dlv test --headless --listen=:2345 --api-version=2
3、goland编辑器里面开启debug
1、可以调试测试用例
2、也可以调试主程序
注:每次调试完成之后,下次调试,都需要到远程容器里面再次开启远程调试。即到调试文件所在文件夹执行命令
dlv test --headless --listen=:2345 --api-version=2