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

相关文章
|
4天前
|
程序员 SEO
手把手教你搭建属于自己的网站(获取被动收入),无需服务器,使用github托管
手把手教你搭建属于自己的网站(获取被动收入),无需服务器,使用github托管
106 2
手把手教你搭建属于自己的网站(获取被动收入),无需服务器,使用github托管
|
4天前
|
弹性计算 运维 安全
带你读《云上自动化运维宝典》——ECS省钱指南来啦!万字长文教你如何选择与业务形态最匹配的付费方式(1)
带你读《云上自动化运维宝典》——ECS省钱指南来啦!万字长文教你如何选择与业务形态最匹配的付费方式(1)
371 0
|
4天前
|
弹性计算 关系型数据库 MySQL
|
4天前
|
Linux 网络安全 开发工具
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
31 0
|
4天前
|
弹性计算 运维 Kubernetes
云原生K8S场景自动化响应ECS系统事件
客户云原生K8S场景下,通过社区开源NPD+Draino+Autoscaler零开发,对接响应ECS主动运维事件,通过自动响应事件减少非预期宕机。
|
4天前
|
运维 监控 持续交付
服务器基础知识(IP地址与自动化技术的使用)
服务器基础知识(IP地址与自动化技术的使用)
27 0
|
4天前
|
安全 Shell 网络安全
Git学习---Git快速入门、Git基础使用、Git进阶使用、Git服务器使用(IDEA集成GitHub、Gitee、GitLab)、GitHub Desktop客户端
Git学习---Git快速入门、Git基础使用、Git进阶使用、Git服务器使用(IDEA集成GitHub、Gitee、GitLab)、GitHub Desktop客户端
139 0
|
4天前
|
弹性计算 安全 Linux
秒级自动化部署幻兽帕鲁服务器8人玩家4核16G仅需26元
秒级自动化部署幻兽帕鲁服务器8人玩家4核16G仅需26元,如何自建幻兽帕鲁服务器?基于阿里云服务器搭建幻兽帕鲁palworld服务器教程来了,一看就懂系列。
|
4天前
|
弹性计算 安全 Linux
秒级自动化部署幻兽帕鲁服务器8人玩家在线,阿里云26元!
秒级自动化部署幻兽帕鲁服务器8人玩家在线,阿里云26元!
66 0
|
4天前
|
JavaScript jenkins 应用服务中间件
Jenkins + Github + Nginx 自动化部署 Vue 项目
Jenkins + Github + Nginx 自动化部署 Vue 项目
188 0

热门文章

最新文章