二、jenkins + gitee + flask

jenkins + gitee

flask + websocketio + Flask-SQLAlchemy

仓库地址: https://gitee.com/ShanCeLy/we-chat.git 把这个项目放到你的仓库里

一、配置gitee

安装 gitee 插件(安装后重启,它也有一个重启选项)
系统管理 -> 插件管理

二、项目配置

系统管理->系统配置

  1. 主目录,也就是项目目录(这里也提供了修改方法)

注: 自动部署时,一般会将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. 至此基础配置算是完成

三、 创建任务

选择: 新建任务

我们先选择构建一个自由风格的软件项目

四、任务配置

  1. 基础配置

gitee 连接选择我们刚才创建的。

  1. 源码管理

    输入自己仓库的地址,配置上自己的gitee的用户名和密码

  2. 分支选择根据需求(我的只有一个分支)

  3. 构建触发器(这个意思时什么时候触发自动部署, 我们选推送代码和合并)

    想要实现这个过程需要在gitee种配置:

    ​ 当合并或者push到指定分支的时候, 向jenkins发送通知

    ​ 即这一句: Gitee webhook 触发构建,需要在 Gitee webhook 中填写 URL: http://123.56.223.123:8080/gitee-project/ceshi Gitee 触发构建策略

    步骤:进入项目仓库->管理->webHooks -> 添加webHook

    密码由Jenkins生成,在下边有

    填入添加即可:

  4. 保存构建

    构建完成出现:

​ 进入可以看到成功了:

  1. 脚本运行

    在我们的项目种有一个 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
posted @ 2021-08-02 13:41  ShanCe-刘勇  阅读(163)  评论(0编辑  收藏  举报