利用服务器进行github+drone 自动化部署

简介: 自动化部署

服务器

在阿里云学生优惠中领取了一个免费7天的服务器。

github中添加OAUTH密钥

部署Drone之前在github中添加一个OAuth登录密钥,Drone使用OAuth方式登录。

1、打开setting -> Developer settings -> OAuth apps 添加一个新的oauth app

记住clint_id 和 secret 后面要用

image.png

其中

  • homepage url为drone server的地址
  • authorization callback url 为github oauth登录成功后的回调地址

编写dokcer-compose.yml文件

此文件用于编排生成运行容器(前提是服务器中安装了docker)

version: '3.9'
# 创建自定义网络
networks:
  drone:
    name: drone
    driver: bridge
services:
  # 数据库服务
  db:
    image: postgres:latest
    container_name: drone_db
    restart: always
    networks:
      - drone # 加入到drone网络
    ports:
      - '7931:5432'
    environment:
      - POSTGRES_USER=drone # PGSQL默认用户
      - POSTGRES_PASSWORD=drone # PGSQL默认密码
      - POSTGRES_DB=drone # PGSQL默认数据库
    volumes:
      - /volumes/drone/db:/var/lib/postgresql/data
  # Drone Server 服务
  server:
    image: drone/drone:2.8.0 # 目前drone最新版本为 2.8.0
    container_name: drone_server
    restart: always
    networks:
      - drone # 加入到drone网络
    ports:
      - '8888:80'
    environment:
      - DRONE_SERVER_PROTO=http # 访问协议,创建webHooks和重定向
      - DRONE_SERVER_HOST=47.115.223.63:8888 # 主机名称,创建webHooks和重定向
      - DRONE_RPC_SECRET=e1ad8a7f3dbc68ca9c21bcc949335009 # 与 drone runner 通讯的密钥
      - DRONE_USER_CREATE=username:tlf,admin:true # 管理员账户
      - DRONE_DATABASE_DRIVER=postgres # 数据库类型
      - DRONE_DATABASE_DATASOURCE=postgres://drone:drone@db/drone?sslmode=disable # 数据库连接
      - DRONE_GIT_ALWAYS_AUTH=true # 使用 oauth 身份验证信息拉取代码
      - DRONE_GITHUB_CLIENT_ID=5922eead7512d27158c3 #上面申请的clientId
      - DRONE_GITHUB_CLIENT_SECRET=6911358fca7f451c22c7ab6a1c08864ebfc83f43 #github client secret
      - TZ=Asia/Shanghai

    volumes:
      - /volumes/drone/server:/data
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - db
  # Drone Docker Runner
  runner:
    image: drone/drone-runner-docker:1.8.0 # 目前drone-runner-docker最新版本为 1.8.0
    container_name: drone_runner
    restart: always
    networks:
      - drone # 加入到drone网络
    ports:
      - '7930:3000'
    environment:
      - DRONE_RUNNER_NAME=docker-runner
      - DRONE_RUNNER_CAPACITY=10 # 限制runner可执行的并发管道数量
      - DRONE_RPC_PROTO=http # 访问drone server 协议
      - DRONE_RPC_HOST=47.115.223.63:8888 # 访问drone server 服务器地址
      - DRONE_RPC_SECRET=e1ad8a7f3dbc68ca9c21bcc949335009 # 与 drone server 通讯的密钥
      - DRONE_UI_USERNAME=tlf # Drone Runner 的 UI 用户账号
      - DRONE_UI_PASSWORD=tlf # Drone Runner 的 UI 用户密码
    volumes:
      - '/var/run/docker.sock:/var/run/docker.sock'
    depends_on:
      - server
  • DRONE_RPC_SECRET 是drone server与runner通信的密钥,必须一致。
  • drone server :主要负责展示和管理自动部署的项目
  • drone runner: 负责执行操作,执行时会轮询server来确定执行的操作。
  1. 使用docker-compose up -d 命令来运行响应的容器。

image.png

image.png
此时相关容器以及运行起来。

2.访问docker server 的地址 http://127.0.0.1 会跳转到github进行oauth授权然后再跳转到login进行drone登录

3.进入drone页面

image.png

此页面已经是我测试部署成功的页面了。

4.激活仓库

image.png

点开未激活的仓库

image.png

进行激活并设置一些东西

image.png

  • Protected : 此属性是设置 是否要验证 配置文件(.drone.yml) 中的签名,开启后签名验证错误则不允许构建
  • timeout 是设置构建任务执行的超时时间。
  • Configuration 是设置配置文件文件,默认为  .drone.yml。 这个一般不需要改动。

编写 .doron.yml文件
此文件定义当github项目提交时,触发webhook发送消息后,drone自动化部署执行的操作。(放在项目的根目录中)

kind: pipeline # 定义一个管道
type: docker # 当前管道的类型
name: test # 当前管道的名称
steps: # 定义管道的执行步骤
  - name: test # 步骤名称
    image: node:latest # 当前步骤使用的镜像
    commands: # 当前步骤执行的命令
      - echo 测试drone执行

drone会根据step中的操作一步一步的执行。

稍微复杂一点的.drone.yml文件

kind: pipeline
name: 测试版

steps: 
   #git镜像
 - name: tlf
   image: alpine/git
   commands:
   - git checkout origin/tlf -B tlf

 - name: docker
   image: plugins/docker  #编译镜像
   volumes:                              #将容器中目录挂载到宿主机
   - name: docker                
     path: /var/run/docker.sock     
   settings:           
    repo: 
    registry: 
    dockerfile: Dockerfile --编译生成镜像时执行操作
    username:
      from_secret: docker_username
    password:
      from_secret: docker_password

 - name: notify     #通知镜像
   image: drillster/drone-email
   settings:
    host: sm
    port: 
    username: 
    password:
      from_secret: email_password
    from: 
    recipients: [  ]
   when:
    status: [success, failure]


volumes:        #定义流水线挂载目录
- name: docker
  host:
    path: /var/run/docker.sock

trigger:       #管道执行触发条件
  branch:
  - tlf

推送代码到github相关仓库触发自动化部署

image.png

drone执行相关操作,部署成功。

相关文章
|
3月前
|
弹性计算 Devops Shell
用阿里云 DevOps Flow 实现 ECS 部署自动化:从准备到落地的完整指南
阿里云 DevOps Flow 是一款助力开发者实现自动化部署的高效工具,支持代码流水线构建、测试与部署至ECS实例,显著提升交付效率与稳定性。本文详解如何通过 Flow 自动部署 Bash 脚本至 ECS,涵盖环境准备、流水线搭建、源码接入、部署流程设计及结果验证,助你快速上手云上自动化运维。
289 0
|
4月前
|
运维 Prometheus 监控
3 年部署经验总结:用自动化工具轻松管理 300+ 服务器开源软件
三年前接手公司IT部门时,我满怀信心,却发现部署效率低下。尽管使用了GitLab、Jenkins、Zabbix等100+开源工具,部署仍耗时费力。文档厚重如百科,却难解实际困境。一次凌晨三点的加班让我下定决心改变现状。偶然看到一篇国外博客,介绍了自动化部署的高效方式,我深受启发。
212 0
|
2月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
560 5
|
8月前
|
存储 人工智能 项目管理
2025年GitHub平台上的十大开源MCP服务器汇总分析
本文深入解析了GitHub上十个代表性MCP(Model Context Protocol)服务器项目,探讨其在连接AI与现实世界中的关键作用。这些服务器实现了AI模型与应用程序、数据库、云存储、项目管理等工具的无缝交互,扩展了AI的应用边界。文中涵盖Airbnb、Supabase、AWS-S3、Kubernetes等领域的MCP实现方案,展示了AI在旅行规划、数据处理、云存储、容器编排等场景中的深度应用。未来,MCP技术将向标准化、安全性及行业定制化方向发展,为AI系统集成提供更强大的支持。
1825 2
2025年GitHub平台上的十大开源MCP服务器汇总分析
|
8月前
|
人工智能 API 开发工具
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
GitHub MCP Server是基于Model Context Protocol的服务器工具,提供与GitHub API的无缝集成,支持自动化处理问题、Pull Request和仓库管理等功能。
1639 2
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
|
9月前
|
机器学习/深度学习 人工智能 运维
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
398 14
|
9月前
|
运维 安全 开发工具
GitHub 热门开源运维工具 Websoft9:如何实现服务器管理效率翻倍?
Websoft9 提供 200+ 开源应用一键部署,支持容器化隔离、GitOps 自动化和企业级安全防护,助力服务器管理效率提升 80%。
313 1
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
2637 16
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
9月前
|
机器学习/深度学习 人工智能 运维
基于AI的自动化服务器管理:解锁运维的未来
基于AI的自动化服务器管理:解锁运维的未来
855 0

热门文章

最新文章