Jenkins + Python 项目集成记录
由于使用的一个第三方 Bot 最近服务器似乎不够稳定,决定自行搭建一个,通过 Jenkins 来集成,下面记录一下过程。
集成项目介绍
- 集成项目: channel-helper-bot
- Jenkins 版本: 2.258 (不重要)
- Jenkins 插件:
- GitHub plugin: 用于连接 GitHub
- Git Parameter Plug-In: 用于选择分支
- 系统环境: Python3
操作步骤
由于该项目需要修改配置文件,我这里先把配置文件写入 Jenkins 。
首页点击 Manage Jenkins,拉到下面选择 Managed files,新建一个配置文件,选择 Custom file,并填写ID。
按照项目要求,将 helper__const.py.sample 的内容复制进编辑区域,并修改相应的配置,并保存。
返回首页,建立一个 Freestyle project 的新项目,填写名称,进入下一步;
填写 Description;
勾选 GitHub项目 并填写项目URL;
勾选 This project is parameterized ,选择 Git Parameter ,Parameter Type 选 Branch or Tag,Default Value 填写 origin/master
;
Source Code Management 选择 Git 并同样填写 URL,Branches to build填写 $BRANCH
。
在 Build Environment 中勾选 Provide Configuration files,选择上面创建好的配置文件,并设置 Target 为 helper_const.py ,如果文件应该覆盖到其它地方,则应该设置对应的相对目录。
Build 中增加 Shell
1 | BUILD_ID=DONTKILLME |
第一句的作用为,构建结束后不杀死Python进程;
后面两句用于 pip 安装依赖;
接下来查找正在运行的主函数的线程并杀死;
接下来使用 nohup 执行 python 主函数并输出日志到 out.log;
如果上一条命令执行无误,则休眠 30 秒后打印最近 50 行的日志,检查运行是否有误。
保存后,构建 master 分支的代码,实现 bot 的正常运行。
现在为止,已经可以实现手动选择对应的 GitHub 分支来运行,并且后台不会杀死 python 进程,也不会让 Jenkins 一直保持构建状态。