Linux+Jenkins环境搭建以及自动部署django项目
一、Jenkins的优点
1、传统网站部署流程
一般网站部署的流程 这边是完整流程而不是简化的流程
需求分析—原型设计—开发代码—内网部署-提交测试—确认上线—备份数据—外网更新-最终测试
,如果发现外网部署的代码有异常,需要及时回滚。
一般是运维来做 1、功能测试 2、上线的时间 3、 jenkins 4、运维 5、功能测试
2、Jenkins部署流程
我们可以通过jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置,简单易用。
简单来说方便如下人员:
- 开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVN、GIT仓库即可。 war 源码多 自动把代码放到服务器上面
- 运维人员:减轻人工干预的错误率,ansible 一键完成了 同时解放运维人员繁杂的上传代码、手动备份、更新
- 测试人员:可以通过jenkins进行简单的代码及网站测试
3、持续集成的意义 增加工作效率
- 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量
- 持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能
- 持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心
4、持续集成的组件
- 一个自动构建过程,包括自动编译、分发、部署和测试
- 一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,例如SVN、GIT代码库
- 一个jenkins持续集成服务器就是一个配置简单和使用方便的持续集成服务器
二、 jenkins安装
安装使用的基本环境为centos8
1、准备工作
首先我们需要下载jenkins
jenkins下载地址:http://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.303-1.1.noarch.rpm
由于jenkins是使用java代码开发的,所以我们需要安装java容器才能运行jenkins
需要安装JDK+Tomcat
yum -y install java-1.8.0-openjdk.x86_64 #安装1.8jdk
cd /opt #进入opt目录
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.69/bin/apache-tomcat-8.5.69.tar.gz #获取tomcat8的安装包
tar xvf apache-tomcat-8.5.69.tar.gz #解压tomcat7的解压包
mkdir /usr/local/tomcat -p #在环境变量文件夹下创建tomcat文件夹
mv apache-tomcat-8.5.69/* /usr/local/tomcat/ #将解压出来的tomcat文件夹的所有内容移到/usr/local/tomcat目录下
cd /opt #跳转到opt目录
wget http://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.304-1.1.noarch.rpm #获取django安装包
rpm -ivh jenkins-2.304-1.1.noarch.rpm #安装Jenkins安装包
/etc/init.d/jenkins start #启动Jenkins
/usr/local/tomcat/bin/startup.sh #启动tomcat
2、linux升级python
升级python3.6–python3.9
yum -y install zlib zlib-devel openssl openssl-devel sqlite-devel #安装依赖
cd /opt #到opt文件夹
wget http://python.org/ftp/python/3.9.2/Python-3.9.2.tar.xz #下载Python压缩包
tar -jxvf Python-3.9.2.tar.xz #解压压缩包
cd Python-3.9.2 #进入Python解压包
./configure --prefix=/usr/local/python3.9 #编译 设置编译所到的python文件夹
make
make install
cd /usr/bin/
mv python3 python3.6.bak #备份文件
ln -s /usr/local/python3.9/bin/python3 /usr/bin/python3 #设置软连接到环境变量
##输入python,如果出现以下界面,恭喜,安装成功
[root@centos1 ~]# python3
Python 3.9.2 (default, Jul 27 2021, 09:20:17)
[GCC 8.4.1 20200928 (Red Hat 8.4.1-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
**install setuptools **:如果要使用pip那么一定要安装setuptool不是没法安装pip
cd /opt
wget https://files.pythonhosted.org/packages/db/e2/c0ced9ccffb61432305665c22842ea120c0f649eec47ecf2a45c596707c4/setuptools-57.4.0.tar.gz # https://pypi.org/project/setuptools/#files这个网站下找到下载setuptools压缩包
tar xvf setuptools-57.4.0.tar.gz #解压缩压缩包
cd setuptools #跳转到setuptools目录
python setup.py install #用python命令执行安装文件
cd .. # 回到opt目录
wget "https://files.pythonhosted.org/packages/f7/ce/e359cf283c0c0f2e0af7df8f16c8d79047aa1887a00a5b39b27d8afc49e2/pip-21.2.1.tar.gz" #下载pip压缩缩包
tar xvf pip-21.2.1.tar.gz #解压 压缩包
cd pip-21.2.1
python setup.py install #用python命令执行安装文件
mv /usr/bin/pip3 /usr/bin/pip3.bak #备份文件
ln -s /usr/local/python3.9/bin/pip3 /usr/bin/pip3 #设置软连接到环境变量
pip3 install django #通过pip命令安装django
因为jenkins使用8080端口,所以请监控8080的端口是否起来,判断jenkins又没有启动成功.
[root@centos1 bin]# netstat -tnlp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :::8080 :::* LISTEN 1502/java
打开网站http://IP:8080
三、部署项目
1 插件管理
如果插件下载失败 更换源 http://mirror.xmission.com/jenkins/updates/current/update-center.json
因为我们只需要构建python项目 所以我们这边只需要3个插件
- git plugin
- python plugin
- pipeline
2 创建一个测试job webhook钩子
只要收到一个push请求 就会发送一个post的请求给jenkins**
(1)第一步 创建项目
创建任务 名字 master-build 自由代码风格
(2) 丢弃旧的构建 (保留7天,最大构建的最大数100)
(3)码云获取HTTP地址 https://gitee.com/byz11211993/jenkins-test-engineering.git
(4)Jenkins中配置码云中的地址,并添加秘钥
秘钥生成方法
ssh-keygen -t rsa -C "jimzhou@qq.com"
生成公钥和私钥
cat ~/.ssh/id_rsa.pub 发送给码云
cat ~/.ssh/id_rsa 写入到jenkins
(5)测试项目是否搭建成功
四、创建Django项目并测试同步
1、创建一个最简单的Django工程
在创建完成后将工程push到git码云
#用git将你的新建项目push到码云,并且在linux下载
python manage.py runserver 0.0.0.0:8000
#在浏览器输入网址查看是否成功显示
http://虚拟机ip:8000
2、继续配置jenkins任务
* * * * *
在master-build中创建触发器,设定1分钟执行一次
poll SCM(日常表 可以根据时间来判断)
H/2 * * * * (2分钟检查一下版本库 如果有更新就不触发 如果没有更新就不触发)
注:Schedule的配置规则是有5个空格隔开的字符组成,从左到右分别代表:分 时 天 月 年。*代表所有,0 20 * * * 表示“在任何年任何月任何天20点0分”进行构建
#构建 execute shell
python3 manage.py test #进入xxx目录并执行测试脚本
#构建后操作
#选择 email notifications
#输入你的邮箱 选中每次不稳定的构建都发送邮件
回到工作区,选择立即构建
在Console Output 控制台输出
如果出现以下内容,说明成功了
3、配置触发器同步更新服务器代码
增加一个任务 master deploy
其他都不需要改 只需要改2个地方
3.1 第一个地方
构建触发器
Build after other projects are built (勾选这一项)
projects to watch (master_build) 当前一个动作构建成功后我才触发
3.2第二个地方
构建
BUILD_ID=DONTKILLME nohup python3 manage.py runserver 0.0.0.0:8000 &
BUILD_ID=DONTKILLME : 在jenkins里面在后台运行的程序都会被jenkins自动杀死 所以需要加上BUILDID这个参数 加了这个参数你的程序就不会被杀死
这里注意任务运行会把最后的&给忽略了所以这里最好写脚本然后在这里写运行脚本的命令
4、修改本地工程index.html代码
修改完成后,push提交到码云。
5、Jenkins同步代码查看
等待Jenkins每分钟刷新
当看到构建队列中存在构建时,等待构建完成刷新网页,查看我们的虚拟机上项目代码是否更新完成。
刷新后发现代码已更新,表示我们的Jenkins自动部署已完成。
五、免密码登录
$ scp ~/.ssh/id_rsa.pub root@<remote_ip>:pub_key //将文件拷贝至远程服务器
$ cat ~/pub_key >>~/.ssh/authorized_keys //将内容追加到authorized_keys文件中, 不过要登录远程服务器来执行这条命令
更多推荐
所有评论(0)