Drone服务初使用

简介: Drone是Go语言编写的,基于容器技术的CI/CD系统。是目前为止个人感觉最轻量级的CI/CD系统,使用本身非常方便容易。目前Drone文档严重缺乏,而且好多文档是之前历史版本的使用文档,所以在安装和使用时会有一些小麻烦,除去这些一切很舒服。

概要

Drone是Go语言编写的,基于容器技术的CI/CD系统。是目前为止个人感觉最轻量级的CI/CD系统,使用本身非常方便容易。目前Drone文档严重缺乏,而且好多文档是之前历史版本的使用文档,所以在安装和使用时会有一些小麻烦,除去这些一切很舒服。前一篇已经写完如何安装Drone,本篇会以一个实例来讲一下,如何用Drone完成一个最简单Golang项目的部署。

激活指定项目

打开部署好的Drone页面:

首页

搜索你要做自动化部署的项目(这儿是test-drone项目):

搜索页

点击『ACTIVATE』进入:

激活前页

激活成功进入配置页。注意,Project settings要选择Trusted,因为要挂载宿主机文件系统;其他按需要选择。

配置页

默认配置文件是.drone.yml, 一般也就用这个文件。到此项目激活成功,可以开始下一步行动了。

配置私钥

进入配置页面,输入Secret Name和对应的Secret Value后点击「ADD A SECRET」,就成功添加私钥

配置页

Docker Hub相关私钥

这儿要配置2个私钥,Docker Hub的用户名和密码,即执行docker login时要输入的用户名和密码

docker用户名对应key: docker_user
docker密码对应key:   docker_pass

DingTalk

本文使用钉钉的小机器人来做通知,这儿需要把钉钉的token也放到私钥中

钉钉token对应key:   dingding

钉钉token获取方式:

钉钉组(3人可创建组) -> 组设置 -> 小组助手 -> 新增

钉钉助手

选择「自定义」后成功创建助手,查看webhook,如:
https://oapi.dingtalk.com/robot/send?access_token=d4a22b306d1c15a9e80504087cde8e637b8c66fa024554ffef0926a4dea1xxxx

这儿的token=后面的64位字串就是要钉钉的token值

.drone配置

pipeline主配置

kind: pipeline
type: docker
name: demo-go           # 指定项目名称

steps配置-编译

- name: 编译
    image: golang:alpine  # 本项目是golang项目, 所以使用go镜像
    environment:
      CGO_ENABLED: "0"    # 指定环境变量
    commands:
      - go build -o test-drone    # 执行编译命令

steps配置-构建镜像

- name: 构建镜像  
    image: plugins/docker  # 构建docker镜像专用镜像
    volumes:
    - name: docker         # 挂载下面定义的Volumn
      path: /var/run/docker.sock   # 与宿主机用同一docker
    settings:       # plugins/docker用到的相关配置
      username: 
        from_secret: docker_user   # alicloud指定的docker hub的用户名(前面配置)
      password: 
        from_secret: docker_pass   # alicloud指定的docker hub的密码(前面配置)
      repo: registry.cn-beijing.aliyuncs.com/zhaoweiguo/test    # 要推送docker地址
      registry: registry.cn-beijing.aliyuncs.com   # 使用的docker hub地址
      tags: ${DRONE_BUILD_NUMBER}  # docker的tag值, 默认每次加1

steps配置-Kubernetes 部署

  - name: Kubernetes 部署
    image: guoxudongdocker/kubectl:v1.14.1   # 执行kubectl的镜像
    volumes:
      - name: kube            # 挂载下面定义的Volumn
        path: /root/.kube     # 使用宿主机配置的kube配置
    commands:
          # 把deployment.yaml中的#Tag修改为上面打包的docker的tag值
      - sed -i "s/#Tag/${DRONE_BUILD_NUMBER}/g" deployment.yaml 
      - kubectl apply -f deployment.yaml    # 执行kubectl apply

steps配置-钉钉通知

- name: 钉钉通知
    image: guoxudongdocker/drone-dingtalk    # 钉钉通知专用镜像
    settings:
      token:
        from_secret: dingding     # 钉钉的token(前面配置)
      type: markdown
      message_color: true
      message_pic: true
      sha_link: true
    when:
      status: [failure, success]   # 不管成功与否都发通知
 

要挂载的volumn:

volumes:
- name: kube
  host:
    path: /tmp/cache/.kube    # 注意: 需要提前把kube的配置信息放到指定目录
- name: docker
  host:
    path: /var/run/docker.sock

触发条件

trigger:
  branch:
    - master   # master分支收到推送就触发

构建结果

把上面项目提交后,打开构建页面如下:

构建结果

钉钉也收到通知:

构建结果

因为没有输入正确的docker_username,所以这次部署失败了,但不影响大家对整体的了解。

说明

本文只是最简单的Go项目编译、构建镜像、部署到k8s以及最后的钉钉通知。只是为了讲解Drone的使用,省略了单元测试、集成测试、可用性测试等。源码参见:
Drone测试实例源码

目录
相关文章
|
关系型数据库 MySQL 数据库
n8n自动化工具部署与使用
n8n是一款开源的工作流自动化工具,类似于IFTTT。它的优点是开源、可以自托管、下载安装方便、易于使用,可以互联上百种服务。n8n基于节点能够将任何工具连接在一起,轻松部署不同类型的任务。它可以做很多事情,比如:从数据库中获取数据后下载为excel然后通过邮件发送给其他人。
11689 1
|
8月前
|
存储 缓存 安全
synchronized 底层全解:从对象头、锁升级到内核实现,击穿并发编程的核心基石
本文深度剖析Java中synchronized的底层原理:从三种使用范式、字节码实现,到对象内存布局、Mark Word状态切换,详解锁升级(偏向→轻量→重量)全流程及JVM优化(锁消除/粗化),并结合JOL实战验证,兼顾理论深度与生产实用性。
791 2
|
机器学习/深度学习 Web App开发 人工智能
Colaboratory:手把手教你使用Google免费的云端IDE进行深度学习(免费的GPU加速)的详细攻略
Colaboratory:手把手教你使用Google免费的云端IDE进行深度学习(免费的GPU加速)的详细攻略
Colaboratory:手把手教你使用Google免费的云端IDE进行深度学习(免费的GPU加速)的详细攻略
|
域名解析 缓存 网络协议
如何解决域名解析不生效问题?
文中对域名解析不生效的原因进行了分析,并针对最常见的本地递归域名服务器缓存不生效的问题提出了解决方案,尤其移动域名解析HTTPDNS对无线场景下的应用特别有效。
33605 9
|
8月前
|
人工智能 安全 API
OpenClaw(Clawdbot)喂饭级图文指南!阿里云/本地部署+API配置+集成1.5万Skills及避坑指南,打造全能AI助手
2026年,开源AI Agent领域迎来现象级产品——OpenClaw(原Clawdbot)。这款由奥地利独立开发者Peter于2025年11月推出的工具,仅用3个月就以史上最快速度登顶GitHub,Star数突破24万,超越React等经典开源项目,成为开发者与普通用户追捧的“数字世界分身”。其核心魅力在于“本地运行保障隐私+IM无缝接入+1.5万+Skills生态”,打破了传统AI助手“只对话不干活”的局限,真正实现从沟通到任务执行的闭环。
728 4
|
监控 安全 Java
使用 @HealthEndpoint 在 Spring Boot 中实现自定义健康检查
Spring Boot 通过 Actuator 模块提供了强大的健康检查功能,帮助开发者快速了解应用程序的运行状态。默认健康检查可检测数据库连接、依赖服务、资源可用性等,但在实际应用中,业务需求和依赖关系各不相同,因此需要实现自定义健康检查来更精确地监控关键组件。本文介绍了如何使用 @HealthEndpoint 注解及实现 HealthIndicator 接口来扩展 Spring Boot 的健康检查功能,从而提升系统的可观测性与稳定性。
882 0
使用 @HealthEndpoint 在 Spring Boot 中实现自定义健康检查
|
12月前
|
Java 测试技术 API
Java 跳出多层循环
本文详解Java中如何使用带标签的`break`语句跳出多层循环。通过实例展示其语法与应用场景,如图像黑屏检测,并对比传统方法与Stream API,帮助开发者在性能与可读性间做出权衡,提升代码效率与质量。(238字)
407 0
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
9685 30
|
Ubuntu 安全 Shell
Ubuntu中默认的root用户密码
Ubuntu 系统的安全设计默认不启用 root 用户的直接登录,而是通过 sudo 权限来管理系统。这种设计提高了系统的安全性,防止恶意软件或未经授权的用户直接获取最高权限。如果确实需要使用 root 用户,可以通过设置密码和更改 shell 启用 root 登录,同时也能随时锁定和禁用 root 用户以保障系统安全。通过上述步骤,可以灵活管理 Ubuntu 系统中的 root 用户权限。
7102 20
|
缓存 边缘计算 网络协议
深入解析CDN技术:加速互联网内容分发的幕后英雄
内容分发网络(CDN)是现代互联网架构的重要组成部分,通过全球分布的服务器节点,加速网站、应用和多媒体内容的传递。它不仅提升了访问速度和用户体验,还减轻了源站服务器的负担。CDN的核心技术包括缓存机制、动态加速、流媒体加速和安全防护,广泛应用于静态资源、动态内容、视频直播及大文件下载等场景,具有低延迟、高带宽、稳定性强等优势,有效降低成本并保障安全。
2858 4

热门文章

最新文章