上一篇文章,讲了如何安装drone的服务器与runner,这篇文章讲解python项目如何搭配drone来进行服务部署!

简介

本次python的思路,没有用单独的python环境容器来承载脚本的运行,这个python项目,主要是写了循环获取外网ip,并将外网ip推送到dnspod做域名的解析。本次的执行python的思路是,启用drone的ssh容器去在服务器执行部署!

.drone.yml配置

kind: pipeline
type: docker
name: dnspod-script
platform:os: linuxarch: arm64
node:name: pi-runner
steps:
- name: run-pythonimage: appleboy/drone-sshsettings:host: 192.168.1.246username:from_secret: pi_userpassword:from_secret: pi_passwordport: 22command_timeout: 5mscript:
#      - echo success- cd /home/pi/python/dnspod- git pull- bash run.sh

配置步骤解析

  1. kind 类型 这里就用pipeline管道类型即可
  2. type 这里我们上文使用的是docker这里我们也要设置写docker
  3. name 就是这个管道的名称
  4. platform 我用的是树莓派所以架构要用arm64 正常linux服务器这项就不用写了
  5. node对应上文讲的DRONE_RUNNER_LABELS参数用来指定哪个runner执行部署任务
  6. step为执行的步骤,drone的步骤每一步都是使用临时docker的容器来实现的,每一步docker容器执行完会被自动销毁,所以本配置中的第一个用的是docker的ssh镜像,可以用来执行指定容器的命令。settings中配置了ssh要登录的host、username等,由于我们把username的信息放入drone来配置,这样保证了这些敏感字段的安全
  7. script 在ssh登陆服务器执行的命令,先进入python目录,git pull代码执行run.sh脚本,脚本会在下文提供

from_secret 配置图解

点击+ new secret按钮 会有如下弹窗

run.sh脚本解析

#!/bin/bash
ps -ef | grep 'python3 main.py' | grep -v grep | awk '{print $2}' | xargs kill -9
nohup python3 main.py >/dev/null 2>& 1 &
echo success
  1. 首先先查到后台之前python运行的进程,并kill掉
  2. 后台运行python脚本,这里一定要后台运行 并将错误日志和运行日志进行指定,否则drone部署的时候会判断脚本一直运行,直到部署超时

运行build

我把gitea中 webhook的钩子关了,不然每次push代码或者pull request就会执行部署,想的是每次自己手动部署就好了,下图关闭就行了。

下面我们执行部署了,首先点击首页new build

这就部署完成了

总结

整体Drone部署还是比较简单的,配置起来其实理解会了就还是比较简单的,由于Drone官网文档写的比较难懂,大多还是需要自己琢磨,自己实验,下篇文章,会和大家分享Springboot Java的drone配置文件怎么配置详解!

转载说明

本篇文章禁止私自转载,如需转载请联系作者,否则必追究法律责任!

Drone CI/CD系列(二)——python语言之配置.drone.yml文件相关推荐

  1. Drone CI/CD系列(一)——docker安装与配置

    随着,云服务的崛起,越来越多的个人开发者对自己的研发支撑体系有高的标准,伴随着Jenkins的老气的模式,越来越多新生代高颜值高轻量的CICD平台出现! 简介 Drone作为新一代的CICD的平台,不 ...

  2. python123查找指定字符输入m_大数据应用人才培养系列教材 Python语言 刘 鹏 张 燕 总主编 李肖俊 主编 刘 河 钟 涛 副主编....

    Presentation on theme: "大数据应用人才培养系列教材 Python语言 刘 鹏 张 燕 总主编 李肖俊 主编 刘 河 钟 涛 副主编."- Presentat ...

  3. GitLab CI/CD系列教程(一)

    来自:GitLab CI/CD系列教程(一):Docker安装GitLab_哔哩哔哩_bilibili 1. 创建虚拟机并连接Xterm 创建一个4G内存的虚拟机,否则很容易启动不了,报502 虚拟机 ...

  4. Python语言学习:创建/删除文件/文件夹、获取当前文件/文件夹路径(系统环境路径/目录)、获取当前文件夹下的所有子文件路径等代码(os系列用法)实现之详细攻略

    Python语言学习:创建/删除文件/文件夹.获取当前文件/文件夹路径(系统环境路径/目录).获取当前文件夹下的所有子文件路径等代码(os系列用法)实现之详细攻略 目录 系统环境路径的设置 1.sys ...

  5. python语言基础实验_实验二Python语言基础函数包练习.doc

    实验二Python语言基础函数包练习 实验 Python语言基础函数包练习:1208 学号: 实验目的 1.Python语言包,如math.NumPySciPy和Matplotlib等函数包的使用实验 ...

  6. 北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)

    前言 本文是对<北理工 嵩天/黄天宇/礼欣 Python语言程序设计>的学习笔记,供自己查阅使用. 文章目录 北理工嵩天Python语言程序设计笔记(目录) 北理工嵩天Python语言程序 ...

  7. 【.NET】实现CI/CD(二)运行镜像,自动化部署

    (一重山,两重山.) 书接上文,在上回中我们说到了<[Azure + Core]实现CI/CD(一)构建镜像并推送仓库 今天我们继续往下说,说下CD(持续部署)的流程,也是很简单.这里先贴下上篇 ...

  8. 【 云原生 | kubernetes 】- tekton构建CI/CD流水线(二)

    ​ 上一节我们是通过创建Pipelinerun来触发流水线来进行构建,实际生产中完全自动化的实现需要借助tekton中的triggers.本文是上篇的拓展请先了解这篇文章 Tekton Trigger ...

  9. python调用什么函数实现对文件内容的读取_如何使用python语言中的方法对文件进行读写操作...

    在我们使用python语言中的文件时,可以使用open()方法打开文件,close()方法关闭文件,read()方法读取文件内容,write()方法写入内容到文件中.下面利用几个实例说明文件读写方法, ...

最新文章

  1. 第二十二课.DeepGraphLibrary(三)
  2. Unity 中的协同程序
  3. 计算机课真多,为什么有这么多的学习资源和在线课程,依然无法提升自己的能力...
  4. xa协议 mysql_分布式事务XA实现数据一致性的协议与原理
  5. Visual Tracking:运行ECO模型的GPU版本
  6. Android Java 自定义异常
  7. Mono 2.0正式发布了
  8. 【UIKit】UITableView 3
  9. UML表示实体类型和属性
  10. OpenStack运维(二):OpenStack计算节点的故障和维护
  11. MongoDB学习探讨
  12. Python的序列Ⅰ
  13. 主机window7 64位 虚拟机下安装Ubuntu系统如何实现网络共享ixi
  14. md5 java实现与在线工具结果不符_「md5在线解密」使用MD5在线加解密工具,对汉字进行加密,得到不同的结果 - seo实验室...
  15. 对称加密+非对称加密,实现数据安全传输
  16. 基于Qt ffmpeg opengl开发跨平台安卓实时投屏软件
  17. C# 获取每年春节对应的公历日期
  18. 空气质量指数(AQI)分析与预测
  19. coreapi自动生成API接口文档
  20. Excel与Google Sheets中实现线性规划求解

热门文章

  1. 1.3 一摞烙饼的排序
  2. 一摞烙饼的排序问题--读书笔记(2)
  3. 星球大战Java实验报告_一份被隐瞒多年的科学实验报告大揭秘!
  4. Unity-多米诺骨牌
  5. 如何传输利润中心主数据
  6. 远程linux还原本地bak文件,Linux -- 服务器数据备份恢复策略
  7. 如何利用布林带构建量化交易策略?
  8. [数理知识]统计决策理论——贝叶斯决策与两类错误率
  9. 铸造数据安全堤坝,华为云数据灾备解决方案就是强
  10. 图形学基础笔记II:多边形光栅化算法和显卡三角形光栅算法