二、jenkins + gitee + flask
jenkins + gitee
flask + websocketio + Flask-SQLAlchemy
仓库地址: https://gitee.com/ShanCeLy/we-chat.git 把这个项目放到你的仓库里
一、配置gitee
安装 gitee 插件(安装后重启,它也有一个重启选项)
系统管理 -> 插件管理
二、项目配置
系统管理->系统配置
- 主目录,也就是项目目录(这里也提供了修改方法)
注: 自动部署时,一般会将git拉下来的项目放到 上边主目录/workspace/工作区名字
2. gitee 配置
gitee 插件 安装完之后,在系统配置里会出现gitee的配置
输入连接名: weChat
gitee 域名: https://gitee.com/, 这里要修改成你自己的,因为你连不上我的
证书令牌: 点添加 jenkins
![](https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802133822694-1563746991.png)
这里选 gitee API 令牌
3. 从gitee 获取令牌
登录 gitee
设置-> 私人令牌 -> 生成新令牌
这里最好把所有权限给 这个令牌避免出现连不上的情况
把令牌站过来就行了, 因为只出现一次所以保存好
点击添加
![](https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802133834099-182386581.png)
设置完后,右边有一个测试连接可以看下怎么样。
点最下边的保存
4. 至此基础配置算是完成
三、 创建任务
选择: 新建任务
我们先选择构建一个自由风格的软件项目
四、任务配置
- 基础配置
gitee 连接选择我们刚才创建的。
-
源码管理
输入自己仓库的地址,配置上自己的gitee的用户名和密码
-
分支选择根据需求(我的只有一个分支)
-
构建触发器(这个意思时什么时候触发自动部署, 我们选推送代码和合并)
想要实现这个过程需要在gitee种配置:
当合并或者push到指定分支的时候, 向jenkins发送通知
即这一句: Gitee webhook 触发构建,需要在 Gitee webhook 中填写 URL: http://123.56.223.123:8080/gitee-project/ceshi Gitee 触发构建策略
步骤:进入项目仓库->管理->webHooks -> 添加webHook
密码由Jenkins生成,在下边有
填入添加即可:
-
保存构建
构建完成出现:
进入可以看到成功了:
-
脚本运行
在我们的项目种有一个 run.sh
我们执行这个脚本就可以了
配置-> 构建
点保存
立即构建
注:
1.在这里我的项目因为之前部署过,数据库迁移在脚本中注释了, 如果你是第一次,且要使用脚本中进行迁移的话,请把他们放开。
2.这里我的脚本是直接放在项目中的,你也可以直接将脚本放在服务器上。
3. 可以搭配上管理工具管理项目。
- 在workspace 中创建一个和任务一样名字的 文件夹
- 在文件家中放入脚本
- 在构建时执行这个脚本即可
另附脚本内容:
run.sh
#!/bin/bash
if [ ! -d "venv" ]; then
# 创建虚拟环境
virtualenv venv
fi
source venv/bin/activate
pip install -r ./requirement.txt
# python manage.py db migrate
# python manage.py db upgrade
# 启动项目
# export FLASK_APP=app:weChat
# export FLASK_ENV=development
# flask run -h 0.0.0.0 -p 5000
# 获取端口
pid=$(netstat -nlp|grep :5000|awk '{print $7}'|awk -F"/" '{ print $1 }');
# 如果该项目未运行就运行项目
if [ "$pid" == "" ];
then
# gunicorn 配置文件中配置了,项目更新的时候,项目重启了
gunicorn 'app:weChat()' -c weChat.py
fi
weChat.pt
bind = "0.0.0.0:5000"
daemon = 'false'
worker_class = "gevent"
worker_connections = 2000
threads = 20
accesslog = "./gun_access.log"
errorlog = './gun_error.log'
loglevel = 'warning'
timeout = 6000
#preload_app = True
reload = True