搭建Gitea+Drone轻量级代码管理和CI服务

2023-11-03 19:11

本文主要是介绍搭建Gitea+Drone轻量级代码管理和CI服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用环境

IP地址端口所属服务
10.10.9.2083000Gitea网页管理服务
10.10.9.2082222SSH、HTTP下载代码服务
10.10.9.2087500Drone-Server服务
10.10.9.2083100Drone-Runner

Gitea

简介

Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证,它是从Gogs发展而来的,因为Gogs由单一管理者做决定,因此诞生了Gitea,它采用社区管理模式,增加了诸多新特性,而且由社区众多的维护者来决定它的发展方向,因此拥有更强的生命力和发展潜力。

Gitea 的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。采用 Go 作为后端语言,只要生成一个可执行程序即可。并且他还支持跨平台,支持 Linux, macOS 和 Windows 以及各种架构,除了 x86,amd64,还包括 ARM 和 PowerPC.

alt

功能特性

  • 支持活动时间线
  • 支持 SSH 以及 HTTP/HTTPS 协议
  • 支持 SMTP、LDAP 和反向代理的用户认证
  • 支持反向代理子路径
  • 支持用户、组织和仓库管理系统
  • 支持添加和删除仓库协作者
  • 支持仓库和组织级别 Web 钩子(包括 Slack 集成)
  • 支持仓库 Git 钩子和部署密钥
  • 支持仓库工单(Issue)、合并请求(Pull Request)以及 Wiki
  • 支持迁移和镜像仓库以及它的 Wiki
  • 支持在线编辑仓库文件和 Wiki
  • 支持自定义源的 Gravatar 和 Federated Avatar
  • 支持邮件服务
  • 支持后台管理面板
  • 支持 MySQL、PostgreSQL、SQLite3、MSSQL 和 TiDB(MySQL) 数据库
  • 支持多语言本地化(21 种语言)
  • 支持软件包注册中心(Composer/Conan/Container/Generic/Helm/Maven/NPM/Nuget/PyPI/RubyGems)

安装

Gitea的官方文档有中文版,其中介绍了多种安装方式,我们以docker部署为例,采用最基本的部署方式,即使用内部sqlite3为数据库,docker-compose部署配置文件如下:

version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.17.2
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - SSH_PORT=2222
    restart: always
    networks:
      - gitea
    volumes:
      - ./data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:2222"

其中环境变量的配置很多,我们可以在官方文档中查看,这里主要修改一下SSH_PORT的端口,因为默认使用22端口,这会和主机的ssh服务端口冲突,因此我们修改一下端口为2222,3000端口为网页管理端口,其他的配置在第一次访问时会通过网页的方式配置。

使用命令启动镜像:

docker-compose up -d

配置

因为比较轻量级,所以启动速度非常快,第一次访问网页端会进入初始配置页面

alt

这里需要配置的项目有以下几个:

  • 站点名称:名称随意配置
  • 服务器域名:就是宿主机的IP地址或者绑定的域名
  • 基础URL:这里就是网页访问地址,把localhost改为宿主机IP或者域名即可

在可选设置中需要修改一些配置,服务器和第三方服务设置管理员账号设置

服务器和第三方服务设置
alt

这里主要是启用本地模式,因为默认会使用CDN连接一些外网的资源,对于服务器不能连接外网的公司,必须要启用本地模式。一般我们都是企业内使用,因此不需要用户注册,通过管理员创建账号即可。

管理员账号设置
alt

默认第一个注册用户会成为管理员,我们直接在这里创建好管理员信息,这里要注意的是用户名有一些保留字是不能使用的,例如admin

配置好以后点击“立即安装”就可以进入用户页面。

导入外部仓库代码

Gitea支持从以下代码管理仓库导入代码库

alt

如果要支持导入,还要进行一些配置,在gitea/conf/app.ini文件中增加如下配置

[migrations]
ALLOW_LOCALNETWORKS = true[webhook]
ALLOWED_HOST_LIST = 10.10.9.208/16

然后重启容器

docker-compose restart

Drone

简介

Drone 是一款基于 Docker 的 CI/CD 工具,所有编译、测试、发布的流程都在 Docker 容器中进行.

开发者只需在项目中包含 .drone.yml 文件,将代码推送到 git 仓库,Drone 就能够自动化的进行编译、测试、发布。

为什么使用 Drone 作为 CI/CD 工具

  • 功能灵活强大:构建、测试、发布、部署,你想干什么都可以,一套系统全搞定
  • 兼容性好:支持所有 SCM、所有平台、所有语言
  • 环境部署简单:原生支持 Docker 容器,启动两个容器就完成了部署,其它构建、测试、部署工具在使用时会自动从 docker 仓库拉取
  • 扩展性强:强大的插件系统,丰富的插件可以免费使用,也可以自定义
  • 配置简单:正如官方宣传的那样,“configuration as a code”,所有功能、步骤、工具、命令,一个 yaml 配置文件全搞定
  • 维护简单:直接复用 SCM 的账号体系和权限管理,无需注册用户、分配权限

安装

Drone 由两部分构成:

  • Server

    负责任务调度

  • Runner

    执行 Pipeline 的具体任务

因此安装有两个镜像drone/drone:2.13.0drone/drone-runner-docker:1.8.2,首先下载镜像

docker pull drone/drone:2.13.0
docker pull drone/drone-runner-docker:1.8.2

Drone和Jenkins这类CI工具不一样,它必须绑定指定的Git仓库,因此在启动的时候必须配置好对应的仓库信息。我们以Gitea仓库为例。

准备工作

首先在Gitea里面创建好对应的验证信息

alt

生成的令牌要记住,Drone使用OAuth2连接Gitea,这里创建好应用,重定向URI配置Drone服务的登录地址,虽然我们还没有创建好Drone服务,但是这里可以先填写好地址和端口,后面创建Drone服务的时候注意要和这里保持一致。

alt

记录下客户端ID和客户端密钥。Drone是包含server和runner的,他们之间的通信需要进行加密,可以通过如下方式生成密钥:

openssl rand -hex 16

drone-server启动文件配置

version: "3"

services:
  drone-server:
    image: drone/drone:2.13.0
    container_name: drone-server
    restart: always
    ports:
      - "7500:80"
    volumes:
      - ./data:/data
    environment:
      - DRONE_GITEA_SERVER=http://10.10.9.208:3000
      - DRONE_GITEA_CLIENT_ID=9eedfa2e-b0aa-497e-aaee-c7434755fd9c
      - DRONE_GITEA_CLIENT_SECRET=gto_zdessdivpj4gly2lqq2bby3qvsa6xbbrbrngj3rv24pzotsfjw4q
      - DRONE_RPC_SECRET=7cc96b3ca902a735958033cb233abb6e
      - DRONE_SERVER_HOST=10.10.9.208:7500
      - DRONE_SERVER_PROTO=http
      - DRONE_USER_CREATE=username:xingxing,admin:true
  • DRONE_GITEA_CLIENT_ID

    (必填) Gitea OAuth 客户端ID

  • DRONE_GITEA_CLIENT_SECRET

    (必填)Gitea OAuth 客户端密钥

  • DRONE_GITEA_SERVER

    (必填)Gitea 服务器地址,例如 http://10.10.9.208:3000。注意填写准确的 http(s) 协议,否则你会看到来自 Gitea 的错误报告:unsupported protocol scheme

  • DRONE_RPC_SECRET

    (必填)在准备工作中使用 openssl rand -hex 16 生成的共享密钥。这个密钥用于验证 Drone Server 和 Runner 之间的 RPC 连接。因此,在 Server 和 Runner 上都必须使用相同的密钥。

  • DRONE_SERVER_HOST

    (必填)访问 Drone 时所用的域名或 IP 地址。如果使用 IP 地址,还应该包含端口。 例如 http://10.10.9.208:7500

  • DRONE_SERVER_PROTO

    (必填)设置服务器的协议,使用:httphttps。 默认为 https

  • DRONE_USER_CREATE

    管理员配置,这里的管理员用户名是Git仓库的用户名,不一定是Git仓库的管理员,只要是Git仓库的用户即可

配置完后启动drone-server服务

docker-compose up -d

然后访问http://10.10.9.208:7500会自动跳到Gitea的授权页面,授权后填写邮箱、用户名、公司即可进入页面。在这里要注意一点,Drone是没有登录界面的,那么它是怎么获取到Gitea中的仓库进行构建的呢?

Drone和Gitea共用用户信息,当我们访问Drone的时候,如果在相同的浏览器内登录了Gitea,那么Drone就会使用当前Gitea登录用户的信息获取仓库数据;如果没有登录Gitea,那就会跳转到Gitea等登录页面。这个地方让我困惑了很久,一直不知道为什么有些仓库可以获取到,有些仓库又获取不到。还要注意一点,如果已经打开了Drone,我们再切换了Gitea登录的用户,那么Drone是不会自动进行切换的,这个时候需要在Drone中退出登录,再刷新页面登入即可实现切换账号。

alt

进入后我们就看到了当前可以构建的仓库,如果在Gitea增加了参与的项目,而这里又看不到,可以点击Sync按钮进行手动同步。然后进入仓库激活它,进行一些设置。

alt

不要接收pull和fork的WebHook消息,Trusted这里只有Drone管理员才能看到,其他用户是看不到的。

drone-runner启动文件配置

version: "3"

services:
  drone-runner:
    image: drone/drone-runner-docker:1.8.2
    restart: always
    container_name: drone-runner
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:rw
    environment:
      - DRONE_RPC_PROTO=http
      - DRONE_RPC_HOST=10.10.9.208:7500
      - DRONE_RPC_SECRET=7cc96b3ca902a735958033cb233abb6e
      - DRONE_RUNNER_CAPACITY=2
      - DRONE_RUNNER_NAME=runner
  • DRONE_RPC_HOST

    填写 Drone Server 的主机名(以及可选填的端口号)

  • DRONE_RPC_PROTO

    传输协议:httphttps

  • DRONE_RPC_SECRET

    与 Drone Server 共享的密钥,就是在准备工作中使用 openssl rand -hex 16 生成的共享密钥

  • DRONE_RUNNER_CAPACITY

    Runner 可以并发执行的流水线数量,默认:2

  • DRONE_RUNNER_NAME

    自定义 Runner 名称

验证runner是否成功。

docker logs drone-runner

日志中包含以下内容则表示启动成功

starting the server
successfully pinged the remote server 

使用构建

Drone是采用配置文件的方式进行流水线配置的,因此我们首先要在对应的仓库根目录下创建.drone.yml文件,内容如下:

kind: pipeline
type: docker
name: test

文件提交后就会自动触发构建

alt

我们可以通过手动在Drone中创建一个流水线也可以通过配置触发方式来自动触发,在使用Jenkins的时候,我们需要在Git仓库中配置WebHook,并且选择WebHook的触发事件,这样才能自动触发构建,但是在安装配置Drone的时候我们并没有配置触发方式,为什么添加了.drone.yml文件就自动触发构建了呢?原因是因为Drone是与Git仓库绑定的,当我们在创建Drone服务的时候已经配置了Gitea仓库的认证信息,那么当我们在Drone中激活一个项目的时候,Drone就会自动在Gitea中为对应的项目创建WebHook。

alt

进入WebHook编辑页面,会看到默认帮我们选中了一些触发条件

alt

在这里配置一下我们的触发条件,就可以自动触发构建。在这里要注意一下,Gitea在触发WebHook的时候,必须配置可以接收WebHook消息的列表,还记得我们在上面配置的webhook.ALLOWED_HOST_LIST吗?主要就是在这里使用的,如果没有配置,那么触发以后就会报错,报错信息可以在WebHook配置页面的下方看到。

alt

到这里我们的Gitea+Drone自动化构建系统就完成了,下面还有一个小技巧。在Drone的项目配置页面,我们会看到Badges选项。

alt

把里面的内容复制出来,添加到项目的README.md文件头部,这样我们就可以在Gitea项目页面中看到当前流水线的状态,就像右上角红框中显示的那样。

本文由 mdnice 多平台发布

这篇关于搭建Gitea+Drone轻量级代码管理和CI服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/340298

相关文章

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。