1、关于Gitea
Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。易于安装,它可以运行在任何 Go 能够编译的平台:Windows, macOS, Linux, ARM 等等,另外Gitea 拥有很低的系统需求,最低的系统硬件要求为一个廉价的树莓派。
2 、关于Drone
Dron是一个现代化的持续集成平台,它使用强大的云原生pipeline引擎自动化构建、测试和发布工作流。Drone 与多个源代码管理系统无缝集成,包括 GitHub、GitHubEnterprise、Bitbucket、GitLab和Gitea;它的每个构建都在一个隔离的 Docker 容器中运行;另外它也支持插件,可以使用你熟知的语言轻松的扩展它们
drone占用资源特别少我的虚拟机单核2G内存占用内存仅1.5% 占用cpu仅0.3%
关于2者的安装和部署都依赖于docker环境,我们采用docker-compose的方式部署也需要安装相应的docker-compose
该环境基于CentOS-7-x86_64-DVD-2009 系统完成搭建
Centos安装docker
当前在自己机器上安装的docker version版本为20.10.21 API VERSION为 1.4.1
提供在线安装方法
第一步:安装一组工具
sudo yum install -y yum-utils
第二步:设置 yum 仓库地址
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第三步:更新 yum 缓存
sudo yum makecache fast #yum 是包管理器
第四步:安装新版 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
启动docker服务
systemctl start docker
查看Docker状态
查看docker是否启动了,是否是运行状态
systemctl status docker
设置Docker开机自启
systemctl enable docker
查看docker 版本
docker version
如果当前用户执行无权限请执行命令用以将用户添加进docker用户组中
# sudo gpasswd -a $USER docker
# newgrp docker
考虑到现场安装应该都是离线安装
提供docker的tar包
暂时无法在飞书文档外展示此内容
离线安装docker
tar -zxvf docker-20.10.21.tgz mv docker/* /usr/bin/ vi /etc/systemd/system/dockdatter.service
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=infinity LimitNPROC=infinity TimeoutStartSec=0 Delegate=yes KillMode=process Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target
保存后
chmod +x /etc/systemd/system/docker.service #赋权 systemctl enable docker.service #开机启动 systemctl start docker #启动docker docker -v #查看版本
Debian安装docker
参考此教程
https://blog.csdn.net/weixin_43961117/article/details/126125976
如遇apt-get update失败可能是镜像源问题,修改国内镜像源
vi /etc/apt/source.list
添加阿里的镜像
暂时无法在飞书文档外展示此内容
安装docker-compose
当前测试使用的docker-compose版本为v2.4.1
下载
sudo curl -L "https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 下载的文件会输出到 /usr/local/bin/docker-compose
授予权限
sudo chmod +x /usr/local/bin/docker-compose
查看版本
docker-compose version
安装离线版本
离线安装包
sudo mv docker-compose /usr/local/bin/ sudo chmod +x /usr/local/bin/docker-compose docker-compose -v
准备好docker和docker-compose环境之后
安装gitea
安装gitea可以通过docker-compose.yml文件 通过命令
docker-compose up -d
直接启动
暂时无法在飞书文档外展示此内容
启动之后docker-compose logs查看日志如遇到启动失败,无法提供安装文件路径权限等报错,
可能是docker的版本过低导致不兼容导致
启动成功gitea之后,可以登陆了IP:port 访问。首次登录设置请将配置中的IP地址或者域名设置正确
登录之后创建库
配置gitea
点击个人中心设置
选择应用
输入创建OAuth2应用程序名称为drone
重定向地址为drone http://IP:PORT/login
点击创建应用
注意保存客户端id以及客户端秘钥这2个参数是维护在drone启动的docker-compose脚本中的
1、对应DRONE_GITEA_CLIENT_ID
2、对应DRONE_GITEA_CLIENT_SECRET
暂时无法在飞书文档外展示此内容
drone的启动docker-compose文件中 DRONE_RPC_SECRETdrone-server与drone-runner链接秘钥2者配置保持一致即可。同时登录的用户名密码需要是想要访问的库的管理员,不然无法激活webhook,则drone无法接收到库被激活的消息。配置文件中支持的通讯协议已实际情况配置
安装drone
内网工作站drone地址
192.168.2.120:8082
映射外网域名
do 启动drone
drone和drone-run的image包
暂时无法在飞书文档外展示此内容
暂时无法在飞书文档外展示此内容
启动成功之后登录drone
点击应用授权
转跳登录
我们会看到关联的gitea中的仓库
在设置中请打开下图的开关后点击保存
推送.drone.yml文件
该文件可以简单的理解为,.drone.yml配置文件相当于一个.sh文件,部署操作配置在这个文件中,交给Drone引擎执行
该文件需要保存在文件的根目录下
暂时无法在飞书文档外展示此内容
这个时候仓库push之后,gitea会通过web钩子发送请求到drone
drone收到之后开始根据.drone.yml文件的内容开始执行后续操作
进入仓库点击设置
点击web钩子
通过web钩子可以设置触发drone构建的自定义事件
点击推送记录可以看到每次事件的请求以及响应内容,原则上,每一次推送代码都会自动触发一次
如果遇到推送失败如gitea和drone部署在同一台服务器的时候,两者之间无法直接访问可以通过
在gitea的配置文件/data/gitea/conf/app.ini 文件中增加
修改 /data/gitea/conf/app.ini 配置文件,确保存在如下配置
[webhook]
ALLOWED_HOST_LIST = 服务器IP
重启gitea之后即可访问成功
drone页面内容解析
每一次推送更新或者手动构建都可以看到每个仓库的更新内容以及构建时间
点击单个任务
可以看到每一步的操作以及日志
或者点击GRAPH VIEW观察流水线,点击任意节点可以看到节点的日志
此时已完成了镜像的构建
dorne.yml中将代码下载通过 master-push已将代码放在了服务器的/app/vue-manage-server路径下
通过docker images 在服务器中已可以看到
在drone.yml的最后一步执行了build的操作
到此drone自动构建基本结束,后续将根据具体项目修改Dockerfile 保证容器启动成功即可
budibase自动构建drone出现问题记录
ray-server的CI脚本 注释
teps: - name: TestPullCodeAndZip *# 步骤名称*image: appleboy/drone-ssh *# 使用镜像*settings: host: 192.168.2.120 username: test #登录用户 password: 6AlRXa port: 22 command_timeout: 300s script: - source /home/test/.pyenv/versions/ray-env/bin/activate #进入pyenv环境 - cd /home/test/boyai-ray-serve/ #进入代码地址 - git pull origin test #执行拉取 - export RAY_VERSION=$(git rev-parse HEAD) #获取拉取的版本sha256 将值从变量中替换到deply.yaml文件中 - sed 's/{RAY_VERSION}/'$RAY_VERSION'/' deploy/test/serve-deployments.yaml >> deploy/test/deploy.yaml - cd /home/test - zip -q -r /home/test/tmp/$RAY_VERSION.zip ./boyai-ray-serve #将代码打包存放在docker-compose文件映射的路径 - cd /home/test/boyai-ray-serve/ - serve deploy --address=http://0.0.0.0:52366 deploy/test/deploy.yaml #执行启动命令将zip包发进对应的ray-server - rm -rf deploy/test/deploy.yaml #删除这个创建的启动脚本防止后续拉取冲突 - exit #推出pyenv环境 when: event: [ push, pull_request ] branch: [ test ]
版权归原作者 jiang06188 所有, 如有侵权,请联系我们删除。