ReturnTmp's Blog ReturnTmp's Blog
首页
基础课程
编程语言
框架技术
运维笔记
人工智能
随笔摘录
  • 友链
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

ReturnTmp

分享有趣好玩的计算机知识
首页
基础课程
编程语言
框架技术
运维笔记
人工智能
随笔摘录
  • 友链
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Jenkins | VuePress博客自动化部署
  • 三步教你轻松安装配置 Linux Anaconda 环境
  • Windows SSH 远程连接 Linux
  • VuePress 数学公式支持
  • 一文教你如何防御数据库渗透入侵
  • WSL2 Ubuntu20.04 配置 CUDA
  • 前端开发部署运维笔记
  • 运维监控指南
  • 如何使用『Nginx』配置后端『HTTPS』协议访问
  • 华为云云耀云服务器L实例评测|搭建您的私人影院网站
  • 华为云云耀云服务器L实例评测|服务器反挖矿防护指南
  • 华为云云耀云服务器L实例评测|Git 私服搭建指南
  • VSCode『SSH』连接服务器『GUI界面』传输
  • 『硅云』海外云服务器购买指南
  • GitHub Unfork 指南
  • 摆脱推荐算法,实现万物皆可『RSS』
  • Drone 指南
    • 前言
    • 配置
      • GitHub OAuth 应用配置
      • openssl 共享密钥配置
      • Drone / Drone-Runner 安装
      • Drone
      • 运行容器
      • 参数解释
      • Drone-Runner
      • 运行容器
      • 参数解释
      • Nginx 配置
    • 登录
    • 参考文章
  • 教你如何『SSH』远程连接『内网』服务器
  • 『GitHub Actions』静态博客部署指南
  • Nginx 配置路径解析
  • 『pnpm』多项目环境迁移指南
  • Nginx 403 forbidden 问题
  • 你知道『SSH』为什么安全吗
  • 手把手教你如何给『Linux』打补丁
  • KVM Anolis OS 环境搭建
  • Docker 快速搭建 MySQL 高可用集群
  • RabbitMQ 入门指南(安装,配置,应用)
  • linux JDK8 环境配置
  • 发布策略
  • Spring Cloud Gateway + Nacos 灰度发布
  • Nginx 负载均衡集群 节点健康检查
  • 前端监控搭建
  • 运维监控系统
  • MySQL 可视化监控
  • MySQL 死锁问题排查与解决
  • Zookeeper Windows 安装配置(单机 - 集群)
  • 阿里云服务器镜像迁移
  • git clone 失败问题
  • Couldn't find ffmpeg or avconv 问题
  • 运维笔记
ReturnTmp
2023-09-27
目录

Drone 指南

# 前言

注:本文博主最终配置出现问题,且目前未解决,读者请跳过本文章,或是查看博主的 Jenkins 配置

用惯了重量级的 Jenkins、Travis、CircleCI 这样的持续集成和持续交付工具或平台,也许尝试下更加轻量级的 Drone 也是个不错的选择

Drone 是轻量级自动持续集成和持续交付平台,并可以结合私有代码仓库自动编译、构建服务,几行脚本即可实现自动化部署,相比于重量级的 Jenkins 等工具,非常适合个人或是小型团队自动化持续集成和持续交付

官方首页:Drone CI – Automate Software Testing and Delivery (opens new window)

# 配置

官方文档:Drone CI / CD | Drone (opens new window)

本文将会使用 GitHub 来作为代码托管平台部署我们的前端项目,当然您可以选择 Gitee、Gitea、Bitbucket 等代码托管平台,可以自行在上面的官方文档中寻找相应指南

# GitHub OAuth 应用配置

创建 GitHub OAuth 应用程序。使用者密钥和使用者机密用于授权访问 GitHub 资源。

注意:授权回调 URL 必须与以下格式和路径匹配,并且必须使用确切的服务器方案和主机。

首先进入 GitHub 开发者设置,点此[链接](Developer applications (github.com) (opens new window))进入,然后创建 OAuth App,需要填写的两个 URL 格式如下

Homepage URL:http://your_ip

Authorization callback URL:http://your_ip/login

注:协议也可以为 https

image-20230928183046004

然后需要记录创建的 Client ID 和 Client secrets

# openssl 共享密钥配置

创建共享密钥以验证运行器与中央无人机服务器之间的通信。可以使用 openssl 生成共享密钥

openssl rand -hex 16
1

得到如下值

0a59cc0e9caf22b09d80be68e45ff20e
1

# Drone / Drone-Runner 安装

首先我们要知道 Drone 是需要创建两个容器的,其中一个容器为 drone/drone ,提供视图界面,另外一个 drone/drone-runner-docker,是执行任务的 runner 端

# Drone

# 运行容器
docker run \
  --volume=/var/lib/drone:/data \
  --env=DRONE_USER_CREATE=username:ReturnTmp,admin:true \
  --env=DRONE_GITHUB_CLIENT_ID=1818a1291d68babd42b3 \
  --env=DRONE_GITHUB_CLIENT_SECRET=2f93a8a304838827e1bec70d9c8b8eeb5dde64fa \
  --env=DRONE_RPC_SECRET=0a59cc0e9caf22b09d80be68e45ff20e \
  --env=DRONE_SERVER_HOST=103.151.217.151 \
  --env=DRONE_SERVER_PROTO=http \
  --publish=8010:80 \
  --publish=8011:443 \
  --restart=always \
  --detach=true \
  --name=drone \
  drone/drone:2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 参数解释

DRONE_USER_CREATE是管理员用户名,username后面跟Github的用户名,如果没有设置就无法对仓库进行高级设置(必须配置);

DRONE_GITHUB_CLIENT_ID是创建 OAuth Application 后的 ClientId;

DRONE_GITHUB_CLIENT_SECRET是创建 OAuth Application 后的 ClientSecret;

DRONE_SERVER_HOST需要与创建 OAuth Application 时的 Authorization callback URL 的域名相同(无/loginpath);

DRONE_SERVER_PROTO需要与创建 OAuth Application 时的 Authorization callback URL 的proto相同;

DRONE_RPC_SECRET将在后面配置 Drone-Runner 时使用,作为 Drone 与 Drone-Runner 通信的“凭证”,就是上面openssl rand -hex 16 生成的值

--publish设置Docker的端口映射规则

注:说起来很羞愧,我上面的 GitHub 用户名一开始写错了,少了个字母,导致后面 GitHub 一直登陆不上,大家不要像我一样粗心

# Drone-Runner

# 运行容器
docker run --detach \
  --volume=/var/run/docker.sock:/var/run/docker.sock \
  --env=DRONE_RPC_PROTO=http \
  --env=DRONE_RPC_HOST=103.151.217.151 \
  --env=DRONE_RPC_SECRET=0a59cc0e9caf22b09d80be68e45ff20e \
  --env=DRONE_RUNNER_CAPACITY=2 \
  --env=DRONE_RUNNER_NAME=drone-runner \
  --publish=3000:3000 \
  --restart=always \
  --name=runner \
  --link drone:drone \
  drone/drone-runner-docker:1
1
2
3
4
5
6
7
8
9
10
11
12
# 参数解释

需要注意DRONE_RPC_SECRET需要与运行 Drone 时的配置保持一致;此外还要注意这里的DRONE_RPC_PROTO, DRONE_RPC_HOST以及--link,由于我们这里的 Drone 与 Drone-Runner 在同一台主机上运行,需要它们之间可以相互通信,因此采用了--link选项,使得 Runner 的DRONE_RPC_HOST能够访问到 Drone;

最后我们使用 docker logs runner 查看日志,出现 successfully pinged the remote server 即为成功

# Nginx 配置

# /etc/nginx/nginx.conf
server {
    listen 80;
    
    server_name 103.151.217.151;
    location / {
        proxy_pass http://localhost:8010;
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 100m;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 登录

访问后台地址:http://your_ip:8010

我们进入后台之后会看到你的所有 GitHub 项目,然后点击进入需要管理的项目,然后激活即可

然后就是需要对激活仓库进行如下配置,最后所有配置完毕后 Drone 会自动为我们添加 webhook 记录,不需要手动添加,非常方便

# 参考文章

Drone - 从零开始的 CI 生活 | 某莔 (fix.moe) (opens new window)

Drone CI For Github —— 打造自己的CI/CD工作流(一) | 开发者工具论坛 (learnku.com) (opens new window)

入门 (drone.io) (opens new window)

使用Drone CI自动部署服务 - 掘金 (juejin.cn) (opens new window)

编辑 (opens new window)
上次更新: 2023/10/14, 10:01:13
摆脱推荐算法,实现万物皆可『RSS』
教你如何『SSH』远程连接『内网』服务器

← 摆脱推荐算法,实现万物皆可『RSS』 教你如何『SSH』远程连接『内网』服务器→

最近更新
01
百度网盘加速
03-24
02
新版 PyCharm 设置 Conda 虚拟环境
03-24
03
腾讯云域名转到阿里云
03-24
更多文章>
Theme by Vdoing | Copyright © 2023-2024 ReturnTmp | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式