当前位置:   article > 正文

Gitea 与 Drone 集成实践:完全基于 Docker 搭建的轻量级 CI/CD 系统_docker compose drone gitea

docker compose drone gitea

Drone 是一个使用 Go 语言编写的自助式的持续集成平台,和 Gitea 一样可以完全基于容器部署,轻松扩展流水线规模。开发者只需要将持续集成过程通过简单的 YAML 语法写入 Gitea 仓库目录下的描述文件 .drone.yml 就可以完成 CI/CD 配置。

下面,我们以 gitea.com 服务器为例,搭建一套使用 Gitea 与 Drone 的 CI/CD 系统。

系统结构

Drone 由两部分构成:

  • Server
    负责任务调度
  • Runner
    执行 Pipeline 的具体任务

用户将代码推送到 Gitea 时触发 Webhook,调动 Drone 从 Gitea 拉取最新的代码并根据 .drone.yml 描述文件执行 CI/CD 流水线。

网络结构

由于 CI/CD 任务的特殊性,工作繁忙时会占用较多的系统资源,因此为了提高系统整体可靠性,不建议将 Gitea、Drone Server、Drone Runner 安装在同一台服务器上。

  • 在本地局域网搭建时应该确保以上服务可以通过域名、IP互相访问。例如:
    gitea.example.com  ->  192.168.3.10
    drone.example.com  ->  192.168.3.20
    runner.example.com ->  192.168.3.30
    
    • 1
    • 2
    • 3
  • 如需使用 docker compose 在本地开发环境搭建高可用结构系统,请参考官方文档:
    https://docs.drone.io/server/ha/developer-setup/

准备工作

在 Gitea 上创建 OAuth2 应用程序

在本例中,Drone 基于 OAuth2 认证授权访问您的 Gitea API。您可以创建一个专用于 CI/CD 的账号,并将该账号添加为代码仓库协作者或者组织管理员。

首先,登录一个您要用于集成 Drone 的 Gitea 账号,进入 设置 - 应用,创建一个 Gitea OAuth2 应用程序。

  • 应用名称
    您可以任取一个名字,此案例中我们填写 Drone
  • 重定向 URL
    授权回调 URL 形如 http(s)://<YOUR_DRONE_SERVER>:<PORT>/login,必须使用您设定的 Drone 服务器协议和主机地址。如果使用非标准的HTTP(S)端口,还应该指定准确的端口。
    例如 https://drone.gitea.io/login

创建 OAuth2 应用

编辑 OAuth2 应用

修改 Gitea 服务器的 Webhook 白名单

出于安全考虑,Gitea 默认禁止触发外部主机的 Webhook。您可以将外部主机添加到 webhook.ALLOWED_HOST_LIST 白名单来解除这一限制。具体信息参考文档 Webhook

修改配置时,打开 conf/app.ini,添加 ALLOWED_HOST_LIST = *[webhook] 栏目中,并重启 Gitea 服务器。例如:

[webhook]
ALLOWED_HOST_LIST = *
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/997061
推荐阅读
相关标签
  

闽ICP备14008679号