标签:git flask 代码 jenkins 构建 Credentials Jenkins 部署
上一篇介绍了如何把flask项目部署到服务器
但是有个明显的缺点:每次代码更新都得重新打包上传到服务器,比较繁琐
所以还是老套路啊,借助Jenkins和Gitee来实现代码的自动部署,幸运的是几年前写过关于Jenkins使用的学习博客,传送门:Jenkins系列
参考之前的写的文章,很顺利地借助Jenkins把flask项目部署好了
整体步骤如下
1、在云服务器中部署Jenkins
因为我们要使用Jenkins来完成持续化构建,所以需要在服务器上先部署一个Jerkins服务
我在Jenkins官网下载了一个war包,然后借助tomcat部署好了,具体步骤可以百度下,网上教程很多,这里不再赘述
如果遇到登录问题,可以参考 初次启动jenkins,输入给定密码后登录失败问题解决
2、在jenkins中安装必要插件
因为需要使用git来拉取代码,所以要安装git插件,安装完成后需要配置git的路径
具体参考 jenkins之从0到1利用Git和Ant插件打war包并自动部署到tomcat(第二话):安装插件,配置JDK、Git、Ant
3、通过Jenkins拉取gitee项目代码
(1)首先把本地代码上传至gitee仓库
如果你的项目是私有项目,可能还需要配置一下部署公钥
步骤如下:
连接服务器,切换至~/.ssh目录
输入命令ssh-keygen -t rsa -C "XXX" 生成公钥(XXX自己定义一个名字)
创建好的公钥如下
在码云的项目上添加部署公钥
(2)打开jenkins,新建一个自由风格的job,配置源码管理,这里需要填写项目的git地址(SSH形式)
假如这里提示认证失败,可能需要添加一下认证方式Credentials
通俗来说就是 jenkins 拉取代码时,服务器需要进行一次验证,这里需要事先配置一下,配置方法如下
在jenkins首页点击左侧菜单栏中【Credentials】,然后右侧会出现一个Credentials列表
然后目光移到下方 Stores scoped to Jenkins,点击global
然后再点击左侧【Add Credentials】,进入添加页面
Kind:下拉选择框,选择SSH Username with private key
Scope:按照默认就行
Username:可以随便填,是你为这个认证取的名字
Private Key:选择【Enter directly】,然后直接把私钥输入进来。这里的私钥其实是你在安装git为了把本地git仓库和远程git仓库(github或gitee)关联起来而创建的SSH KEY(不知道怎样生成的可以去看看git教程)
把id_rsa中的内容全部copy出来粘贴在这里就行(说是私钥,但是我试了下,使用id_rsa.pub也是可以的)
Passphrase:如果你在创建 ssh key 的时候输入了 Passphrase 那就填写相应的Passphrase,为空就不填写 (我这里就留空了,不过即使留空,如果建好后查看信息,还是会默认填上一串东西,我也不知道默认填写的是什么,不过没影响到拉取代码)
ID和Description可以不填
这样就创建好一个Credentials,然后在配置源码管理时就可以填写相应的Credentials了
4、在Jenkins中添加shell命令
拉取代码后,还需要设置Jenkins,让它执行shell命令来启动flask项目
之前说过,启动flask项目的命令如下
[root@VM-8-3-centos flaskProject]# python3 run_main.py
如果想在Jenkins中,拉取项目代码后执行启动命令,需要在【构建环境】中添加shell命令,如下
构建一次后,打开这个构建任务的控制台输出,如下,项目已经正常启动了
为了试验一下git代码更新后,有没有拉取新的代码,我修改代码中的一点内容,在下面这个文件中加了一行数字
然后在Jenkins中重新构建一下,打开工作空间,查看这个文件的内容
确实多出来一串数字
标签:git,flask,代码,jenkins,构建,Credentials,Jenkins,部署 来源: https://www.cnblogs.com/hanmk/p/16410289.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。