二、jenkins + gitee + flask
<h3 id="jenkins--gitee">jenkins + gitee</h3><p>flask + websocketio + Flask-SQLAlchemy</p>
<blockquote>
<p>仓库地址: https://gitee.com/ShanCeLy/we-chat.git把这个项目放到你的仓库里</p>
</blockquote>
<h4 id="一配置gitee">一、配置gitee</h4>
<p>安装 gitee 插件(安装后重启,它也有一个重启选项)<br>
系统管理 -> 插件管理<br>
<img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802133712834-878564012.png"></p>
<h4 id="二项目配置">二、项目配置</h4>
<p>系统管理->系统配置</p>
<ol>
<li>主目录,也就是项目目录(这里也提供了修改方法)</li>
</ol>
<p><img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802133642720-1073848485.png"></p>
<pre><code>注: 自动部署时,一般会将git拉下来的项目放到上边主目录/workspace/工作区名字
2. gitee 配置
gitee 插件 安装完之后,在系统配置里会出现gitee的配置
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802133752994-918503416.png"></p>
<pre><code>输入连接名: weChat
gitee 域名: https://gitee.com/, 这里要修改成你自己的,因为你连不上我的
证书令牌: 点添加 jenkins

这里选 gitee API 令牌
3. 从gitee 获取令牌
登录 gitee
设置-> 私人令牌 -> 生成新令牌
这里最好把所有权限给 这个令牌避免出现连不上的情况
把令牌站过来就行了, 因为只出现一次所以保存好
点击添加

设置完后,右边有一个测试连接可以看下怎么样。
点最下边的保存
4. 至此基础配置算是完成
</code></pre>
<h4 id="三-创建任务">三、 创建任务</h4>
<p>选择: 新建任务</p>
<p><img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802133844154-976717452.png"></p>
<p>我们先选择构建一个自由风格的软件项目</p>
<h4 id="四任务配置">四、任务配置</h4>
<ol>
<li>基础配置</li>
</ol>
<p><img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802133858172-1873900487.png"></p>
<p>gitee 连接选择我们刚才创建的。</p>
<ol start="2">
<li>
<p>源码管理</p>
<p><img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802133911617-1339430057.png"></p>
<p>输入自己仓库的地址,配置上自己的gitee的用户名和密码</p>
</li>
<li>
<p>分支选择根据需求(我的只有一个分支)</p>
<p><img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802133922951-1801002107.png"></p>
</li>
<li>
<p>构建触发器(这个意思时什么时候触发自动部署, 我们选推送代码和合并)</p>
<p><img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802133932873-1629242114.png"></p>
<p>想要实现这个过程需要在gitee种配置:</p>
<p> 当合并或者push到指定分支的时候, 向jenkins发送通知</p>
<p> 即这一句: Gitee webhook 触发构建,需要在 Gitee webhook 中填写 URL: http://123.56.223.123:8080/gitee-project/ceshiGitee 触发构建策略</p>
<p>步骤:进入项目仓库->管理->webHooks -> 添加webHook</p>
<p>密码由Jenkins生成,在下边有</p>
<p><img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802133953090-2006013316.png"></p>
<p>填入添加即可:</p>
<p><img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802134002536-1731725389.png"></p>
</li>
<li>
<p>保存构建</p>
<p><img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802134011369-330403151.png"></p>
<p>构建完成出现:</p>
</li>
</ol>
<p><img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802134021492-1213798536.png"></p>
<p> 进入可以看到成功了:</p>
<p> <img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802134031617-1994702926.png"></p>
<ol start="6">
<li>
<p>脚本运行</p>
<p>在我们的项目种有一个 run.sh</p>
<p>我们执行这个脚本就可以了</p>
<p>配置-> 构建</p>
<p><img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802134040331-1979977691.png"></p>
</li>
</ol>
<p><img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802134048311-2096103383.png"></p>
<p>点保存</p>
<p>立即构建</p>
<p><img src="https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802134057054-1186581348.png"></p>
<h1 id="注">注:</h1>
<h1 id="1在这里我的项目因为之前部署过数据库迁移在脚本中注释了-如果你是第一次且要使用脚本中进行迁移的话请把他们放开">1.在这里我的项目因为之前部署过,数据库迁移在脚本中注释了, 如果你是第一次,且要使用脚本中进行迁移的话,请把他们放开。</h1>
<h1 id="2这里我的脚本是直接放在项目中的你也可以直接将脚本放在服务器上">2.这里我的脚本是直接放在项目中的,你也可以直接将脚本放在服务器上。</h1>
<h1 id="3-可以搭配上管理工具管理项目">3. 可以搭配上管理工具管理项目。</h1>
<ul>
<li>在workspace 中创建一个和任务一样名字的 文件夹</li>
<li>在文件家中放入脚本</li>
<li>在构建时执行这个脚本即可</li>
</ul>
<p>另附脚本内容:</p>
<p>run.sh</p>
<pre><code class="language-bash">#!/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
</code></pre>
<p>weChat.pt</p>
<pre><code class="language-python">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
</code></pre><br><br>
来源:https://www.cnblogs.com/ShanCe/p/15089548.html
頁:
[1]