自托管代码仓库与 CI/CD 流水线搭建:Gitea + Drone 整合实践
需求场景平时写一些小项目和脚本放在 GitHub 上虽然方便但私有仓库在免费版有一些限制而且 Actions 的构建时长对个人项目来说有时会超限。一直想在自己拥有的服务器上搭一套轻量级的 Git 托管服务顺便接上 CI/CD实现 push 代码后自动构建镜像或执行测试。我使用了手头的一台阿贝云的云服务器已安装 Docker 和 Docker Compose已绑定域名 git.example.com 用于 Gitea 访问安装 Gitea轻量级 Git 服务Gitea 是用 Go 编写的 Git 托管平台资源占用极低非常适合 1GB 内存的小型服务器。首先创建数据存放目录bashmkdir -p /opt/gitea/{data,config}chown -R 1000:1000 /opt/gitea编写 docker-compose.ymlyamlversion: ‘3’services:gitea:image: gitea/gitea:latestcontainer_name: gitearestart: alwaysports:- “3000:3000”- “2222:22”volumes:- /opt/gitea/data:/data- /opt/gitea/config:/etc/gitea- /etc/timezone:/etc/timezone:ro- /etc/localtime:/etc/localtime:roenvironment:- USER_UID1000- USER_GID1000- GITEA__database__DB_TYPEsqlite3启动服务bashdocker-compose up -d访问 http://服务器IP:3000进入 Gitea 安装页面。首次访问会提示配置数据库选择 SQLite够用然后设置管理员账号和站点名称。安装完成后就可以在页面上创建仓库了。配置 Nginx 反向代理与 HTTPS为了更正式地使用用域名访问并加上 SSL。安装 Nginxbashapt install nginx certbot python3-certbot-nginx -y配置 Nginx 站点 /etc/nginx/sites-available/giteanginxserver {listen 80;server_name git.example.com;location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }}启用配置并申请 SSL 证书bashln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/systemctl restart nginxcertbot --nginx -d git.example.com完成后即可通过 https://git.example.com 安全访问 Gitea。部署 Drone CI/CDDrone 是一个基于容器构建的 CI/CD 工具与 Gitea 集成度很好。4.1 创建 OAuth 应用在 Gitea 中进入用户设置 → 应用 → 创建 OAuth2 应用填入以下信息应用名称Drone回调地址https://git.example.com/login/authorize替换为你的 Drone 域名记下生成的 Client ID 和 Client Secret。4.2 编写 Drone 服务配置创建 /opt/drone/docker-compose.ymlyamlversion: ‘3’services:drone-server:image: drone/drone:latestcontainer_name: drone-serverrestart: alwaysports:- “8080:80”volumes:- /var/run/docker.sock:/var/run/docker.sock- /opt/drone/data:/dataenvironment:- DRONE_GITEA_SERVERhttps://git.example.com- DRONE_GITEA_CLIENT_ID你的ClientID- DRONE_GITEA_CLIENT_SECRET你的ClientSecret- DRONE_RPC_SECRET自定义随机字符串- DRONE_SERVER_HOSTdrone.example.com- DRONE_SERVER_PROTOhttps- DRONE_DATABASE_DRIVERsqlite3- DRONE_DATABASE_DATASOURCE/data/drone.sqlitedrone-runner:image: drone/drone-runner-docker:latestcontainer_name: drone-runnerrestart: alwaysports:- “8081:3000”volumes:- /var/run/docker.sock:/var/run/docker.sockenvironment:- DRONE_RPC_PROTOhttps- DRONE_RPC_HOSTdrone.example.com- DRONE_RPC_SECRET与上面相同的随机字符串- DRONE_RUNNER_NAMErunner-1- DRONE_LOGS_DEBUGtrue启动 Drone 服务bashdocker-compose up -d同样配置 Nginx 反向代理将 drone.example.com 指向 8080 端口并申请 SSL 证书。配置流水线示例在 Gitea 仓库根目录创建 .drone.ymlDrone 会自动执行流水线。下面是一个简单的示例用于检测代码语法并输出构建信息yamlkind: pipelinetype: dockername: defaultsteps:name: 打印构建信息image: alpinecommands:echo “开始构建…”echo “仓库名称: ${DRONE_REPO_NAME}”echo “提交哈希: ${DRONE_COMMIT_SHA}”echo “构建完成”name: 检查 Shell 语法仅示例image: alpinecommands:apk add bashecho “语法检查通过示例步骤”推送到仓库后Drone 会自动触发流水线并在界面上显示执行日志。资源占用与使用感受Gitea 和 Drone 服务同时运行内存占用大约在 500MB 左右含 Docker 后台进程CPU 基本空闲。阿贝云这台免费云服务器的 1GB 内存完全可以支撑这套组合磁盘 I/O 也满足日常 Git 操作。对于开发者来说有了一台自己的代码托管服务器可以省去 GitHub 私有仓库的数量限制同时也体验了企业级 CI/CD 流程的搭建过程。相比免费虚拟主机云服务器的可扩展性确实高很多。踩坑记录端口冲突如果服务器已有其他服务占用 3000 或 8080记得修改映射端口。OAuth 回调地址必须使用 HTTPS 协议否则 Gitea 不会正常跳转Drone 登录会失败。Drone RPC_SECRETserver 和 runner 必须保持一致否则 runner 无法连接到 server。SELinux/AppArmorDebian 默认未开启无需额外处理。如果使用 CentOS需要注意关闭 SELinux 或配置相关规则。结语以上是一个完整的自托管代码仓库 CI/CD 解决方案。所有组件均运行在阿贝云云服务器实例上实测稳定可用。如果你也对自建开发工具链感兴趣可以参考本教程动手实践。

相关新闻

制造业数字化转型,图纸安全要注意!

制造业数字化转型,图纸安全要注意!

图纸上传云端后,数据是否安全? 尤其是汽车零部件、精密加工、模具、新能源等行业,工程图纸往往就是企业核心资料。 泰科纳气泡图软件采用: 纯本地离线运行 无需联网使用 图纸不上传 数据不留存 所有识别、计算、生成过程均…

2026/7/10 1:54:03 阅读更多 →
5大扫描协议(TWAIN/SANE/ICA/WIA/eSCL)实战选型:.NET 7 跨平台集成代码示例

5大扫描协议(TWAIN/SANE/ICA/WIA/eSCL)实战选型:.NET 7 跨平台集成代码示例

.NET 7 跨平台扫描协议集成实战:TWAIN/SANE/ICA/WIA/eSCL 全解析在当今数字化转型浪潮中,文档扫描作为纸质与数字世界的关键桥梁,其技术选型直接影响着企业级应用的兼容性和用户体验。作为.NET开发者,我们经常面临一个核心挑战&am…

2026/7/10 1:52:02 阅读更多 →
26-cv-24537 案件复盘:Palmer Law MISSMILE 纺织收纳商标跨境维权全拆解

26-cv-24537 案件复盘:Palmer Law MISSMILE 纺织收纳商标跨境维权全拆解

跨境知识产权|案件编号:26-cv-24537|家居收纳 / 洗衣网袋 / 包装用品卖家必读避雷指南,英国生活品牌新案落地,核心商标全覆盖收纳赛道,Palmer 律所精准取证批量冻结,收纳袋 / 洗衣网 / 包装包袋…

2026/7/10 1:50:02 阅读更多 →

最新新闻

【计算机大数据毕业设计案例】基于大数据集群的短视频流量异常分析系统的设计与实现 SpringBoot 架构下短视频流量数据可视化大屏系统(程序+文档+讲解+定制)

【计算机大数据毕业设计案例】基于大数据集群的短视频流量异常分析系统的设计与实现 SpringBoot 架构下短视频流量数据可视化大屏系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/10 2:46:15 阅读更多 →
R语言 plantlist 0.6.5 + ape 包:14个物种系统发育树构建与性状数据整合实战

R语言 plantlist 0.6.5 + ape 包:14个物种系统发育树构建与性状数据整合实战

R语言 plantlist 0.6.5 ape 包:14个物种系统发育树构建与性状数据整合实战在生态学和进化生物学研究中,系统发育树(Phylogenetic Tree)是理解物种间进化关系的重要工具。传统构建系统发育树需要基因序列数据,但对于许…

2026/7/10 2:46:15 阅读更多 →
Qt 6.5 信号槽 5 种连接方式深度解析:Direct/Queued/Auto 实战场景与性能对比

Qt 6.5 信号槽 5 种连接方式深度解析:Direct/Queued/Auto 实战场景与性能对比

Qt 6.5 信号槽 5 种连接方式深度解析:Direct/Queued/Auto 实战场景与性能对比 在Qt框架中,信号槽机制是其最核心的特性之一,它为对象间的通信提供了一种灵活且类型安全的方式。而信号槽的连接方式,尤其是connect函数的第五个参数—…

2026/7/10 2:44:14 阅读更多 →
三菱ST语言 vs 梯形图:3类复杂逻辑场景下的代码量与调试效率对比

三菱ST语言 vs 梯形图:3类复杂逻辑场景下的代码量与调试效率对比

三菱ST语言与梯形图深度对比:复杂逻辑场景下的实战效率分析 在工业自动化领域,编程效率直接影响项目周期和后期维护成本。三菱PLC作为市场主流控制器,支持梯形图(Ladder Diagram)和ST(Structured Text&…

2026/7/10 2:42:14 阅读更多 →
基于Springboot+Vue租房管理系统的设计与实现设计与实现【源码+文档】

基于Springboot+Vue租房管理系统的设计与实现设计与实现【源码+文档】

系统介绍基于SpringbootVue租房管理系统有管理员,租客,屋主三个角色。管理员功能有个人中心,租客管理,屋主管理,房源信息管理,订单信息管理,屋主申诉管理,通知公告管理,留…

2026/7/10 2:42:14 阅读更多 →
使用STRIDE模型与微软威胁建模工具为Web应用构建主动安全防线

使用STRIDE模型与微软威胁建模工具为Web应用构建主动安全防线

1. 项目概述:为什么你的Web应用需要一个威胁建模工具箱做Web开发这么多年,我见过太多项目在安全上“亡羊补牢”了。往往是应用上线后,被安全扫描工具扫出一堆漏洞,或者更糟,出了安全事件,团队才开始手忙脚乱…

2026/7/10 2:42:14 阅读更多 →

日新闻

STM32与LTC1864高精度ADC的SPI通信实现

STM32与LTC1864高精度ADC的SPI通信实现

1. 项目背景与核心需求在工业控制和嵌入式系统开发中,模拟信号与数字系统的无缝集成一直是工程师面临的关键挑战。LTC1864作为一款16位高精度ADC转换器,配合STM32F101ZG这类主流微控制器,能够构建高性能的模拟信号采集系统。这种组合特别适合…

2026/7/10 0:03:07 阅读更多 →
猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页视频无法下载而烦恼吗&am…

2026/7/10 0:05:09 阅读更多 →
直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

1. 直流有刷电机驱动方案概述在工业自动化和消费电子领域,直流有刷电机因其结构简单、控制方便、成本低廉等优势,仍然是许多应用场景的首选驱动方案。TC78H653FTG作为东芝推出的新一代H桥驱动器,与MKV46F256VLH16微控制器配合使用&#xff0c…

2026/7/10 0:05:09 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/9 21:41:05 阅读更多 →

月新闻