利用服务器进行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执行相关操作,部署成功。

相关文章
|
5月前
|
存储 人工智能 项目管理
2025年GitHub平台上的十大开源MCP服务器汇总分析
本文深入解析了GitHub上十个代表性MCP(Model Context Protocol)服务器项目,探讨其在连接AI与现实世界中的关键作用。这些服务器实现了AI模型与应用程序、数据库、云存储、项目管理等工具的无缝交互,扩展了AI的应用边界。文中涵盖Airbnb、Supabase、AWS-S3、Kubernetes等领域的MCP实现方案,展示了AI在旅行规划、数据处理、云存储、容器编排等场景中的深度应用。未来,MCP技术将向标准化、安全性及行业定制化方向发展,为AI系统集成提供更强大的支持。
1216 2
2025年GitHub平台上的十大开源MCP服务器汇总分析
|
5月前
|
人工智能 API 开发工具
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
GitHub MCP Server是基于Model Context Protocol的服务器工具,提供与GitHub API的无缝集成,支持自动化处理问题、Pull Request和仓库管理等功能。
1086 2
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
|
6月前
|
机器学习/深度学习 人工智能 运维
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
264 14
|
6月前
|
运维 安全 开发工具
GitHub 热门开源运维工具 Websoft9:如何实现服务器管理效率翻倍?
Websoft9 提供 200+ 开源应用一键部署,支持容器化隔离、GitOps 自动化和企业级安全防护,助力服务器管理效率提升 80%。
188 1
|
9月前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
2312 16
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
6月前
|
机器学习/深度学习 人工智能 运维
基于AI的自动化服务器管理:解锁运维的未来
基于AI的自动化服务器管理:解锁运维的未来
634 0
|
9月前
|
运维 Ubuntu 应用服务中间件
自动化运维之路:使用Ansible进行服务器管理
在现代IT基础设施中,自动化运维已成为提高效率和可靠性的关键。本文将引导您通过使用Ansible这一强大的自动化工具来简化日常的服务器管理任务。我们将一起探索如何配置Ansible、编写Playbook以及执行自动化任务,旨在为读者提供一条清晰的路径,从而步入自动化运维的世界。
165 11
|
9月前
|
运维 网络安全 Python
自动化运维:使用Ansible实现批量服务器配置
在快速迭代的IT环境中,高效、可靠的服务器管理变得至关重要。本文将介绍如何使用Ansible这一强大的自动化工具,来简化和加速批量服务器配置过程。我们将从基础开始,逐步深入到更复杂的应用场景,确保即使是新手也能跟上节奏。文章将不包含代码示例,而是通过清晰的步骤和逻辑结构,引导读者理解自动化运维的核心概念及其在实际操作中的应用。
|
9月前
|
运维 Ubuntu 网络协议
自动化运维:使用Ansible进行服务器配置管理
在现代IT架构中,自动化运维已成为提升效率、减少人为错误的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化和标准化服务器的配置管理过程。通过具体的代码示例和操作步骤,我们将展示如何快速部署应用、管理配置以及自动化日常任务,从而确保环境的一致性和可靠性。
|
10月前
|
运维 安全 Ubuntu
自动化运维:使用Ansible进行服务器配置管理
在现代IT基础设施中,自动化运维是确保高效、稳定和安全服务的关键。本文将深入介绍如何使用Ansible这一开源工具来简化服务器配置管理工作,从基础安装到高级应用,我们将一步步展示如何通过Ansible Playbooks实现自动化部署和维护,旨在帮助读者构建更加灵活和可扩展的运维体系。
177 7

热门文章

最新文章