python pipeline转jenkins_【转】Jenkins+Python部署完整版

来源:http://blog.csdn.net/nunchakushuang/article/details/77118621

一, 简介

一般网站部署的流程 这边是完整流程而不是简化的流程

需求分析—原型设计—开发代码—内网部署-提交测试—确认上线—备份数据—外网更新-最终测试,如果发现外网部署的代码有异常,需要及时回滚

一般是运维来做 功能测试 上线的时间 jenkins 运维 功能测试

部署流程

我们可以通过jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置,简单易用

简单来说方便如下人员:

开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVN、GIT仓库即可。 war 源码多 自动把代码放到服务器上面

运维人员:减轻人工干预的错误率,ansible 一键完成了 同时解放运维人员繁杂的上传代码、手动备份、更新

测试人员:可以通过jenkins进行简单的代码及网站测试

持续集成的意义(总结 提升工作效率)

持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量

持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能

持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心

持续集成的组件

一个自动构建过程,包括自动编译、分发、部署和测试

一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,例如SVN、GIT代码库

一个jenkins持续集成服务器就是一个配置简单和使用方便的持续集成服务器

二、jenkins安装

由于jenkins是使用java代码开发的,所以我们需要安装java容器才能运行jenkins,又因为java的web服务器用的是tomcat,所以我们要安装JDK+Tomcat

安装jenkins+tomcat

[root@vagrant-centos65 ~]# yum -y install java-1.8.0-openjdk.x86_64

[root@vagrant-centos65 ~]# cd /opt/

[root@vagrant-centos65 opt]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.79/bin/apache-tomcat-7.0.79.tar.gz

[root@vagrant-centos65 opt]# tar zxvf apache-tomcat-7.0.79.tar.gz

[root@vagrant-centos65 opt]# mkdir -p /usr/local/tomcat

[root@vagrant-centos65 opt]# mv apache-tomcat-7.0.79/* /usr/local/tomcat

安装jenkins

[root@vagrant-centos65 ~]# cd /opt/

[root@vagrant-centos65 opt]# wget http://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.60-1.1.noarch.rpm

[root@vagrant-centos65 opt]# rpm -ivh jenkins-2.60-1.1.noarch.rpm

[root@vagrant-centos65 opt]# /etc/init.d/jenkins start

Starting Jenkins [ OK ]

[root@vagrant-centos65 opt]# netstat -tnlp | grep 8080

[root@vagrant-centos65 opt]# /etc/init.d/jenkins start

Starting Jenkins [ OK ]

[root@vagrant-centos65 opt]# netstat -tnlp | grep 8080

tcp 0 0 :::8080 :::* LISTEN 7599/java

1240

1240

1240

1240

三、升级python2.6到python2.7

由于django1.7之后的版本就不支持python2.6了 所有需要我们升级python2.6--python2.7

[root@vagrant-centos65 ~]# yum -y install zlib zlib-devel openssl openssl-devel sqlite-devel

[root@vagrant-centos65 ~]# wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2

[root@vagrant-centos65 ~]# tar -jxvf Python-2.7.3.tar.bz2

[root@vagrant-centos65 ~]# cd Python-2.7.3

[root@vagrant-centos65 Python-2.7.3]# ./configure --prefix=/usr/local/python2.7

[root@vagrant-centos65 Python-2.7.3]# make && make install

[root@vagrant-centos65 Python-2.7.3]# cd /usr/bin/

[root@vagrant-centos65 bin]# ll | grep python

-rwxr-xr-x. 2 root root 4864 Nov 22 2013 python

lrwxrwxrwx. 1 root root 6 Jan 16 2014 python2 -> python

-rwxr-xr-x. 2 root root 4864 Nov 22 2013 python2.6

[root@vagrant-centos65 bin]# mv python python2.6.bak

[root@vagrant-centos65 bin]# ln -s /usr/local/python2.7/bin/python /usr/bin/python

[root@vagrant-centos65 bin]# vi /usr/bin/yum

#!/usr/bin/python2.6

五、安装django

安装setuptools

pip的安装需要依赖setuptools,所有需要先安装setuptools

[root@vagrant-centos65 bin]# cd /opt/

[root@vagrant-centos65 opt]# wget https://pypi.python.org/packages/61/3c/8d680267eda244ad6391fb8b211bd39d8b527f3b66207976ef9f2f106230/setuptools-1.4.2.tar.gz

[root@vagrant-centos65 opt]# tar zxvf setuptools-1.4.2.tar.gz

[root@vagrant-centos65 opt]# cd setuptools-1.4.2

[root@vagrant-centos65 setuptools-1.4.2]# python setup.py install

安装pip

[root@vagrant-centos65 ~]# cd /opt/

[root@vagrant-centos65 opt]# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate

[root@vagrant-centos65 opt]# tar zxvf pip-1.5.4.tar.gz

[root@vagrant-centos65 opt]# cd pip-1.5.4

[root@vagrant-centos65 pip-1.5.4]# python setup.py install

[root@vagrant-centos65 pip-1.5.4]# pip

-bash: pip: command not found

[root@vagrant-centos65 pip-1.5.4]# find / -name pip

/usr/local/python2.7/bin/pip

/usr/local/python2.7/lib/python2.7/site-packages/pip-1.5.4-py2.7.egg/pip

[root@vagrant-centos65 pip-1.5.4]# ln -s /usr/local/python2.7/bin/pip /usr/bin/pip

安装django

[root@vagrant-centos65 pip-1.5.4]# pip install django

[root@vagrant-centos65 pip-1.5.4]# pip list

Django (1.11.3)

pip (1.5.4)

pytz (2017.2)

setuptools (1.4.2)

wsgiref (0.1.2)

六、安装插件

git plugin

python plugin

pipeline

1240

1240

1240

1240

七、创建项目

1240

1240

1240

1240

1240

1240

1240

1240

1240

1240

1240

总结

第一步 创建项目

创建任务 名字 master-build 自由代码风格

1. 丢弃旧的构建 (保留7天,最大构建的最大数100)

2. 源码管理 选择git 如果我们需要从码云拉取代码那么我们需要把私钥放到jenkins 公钥放到码云上面去 这样我们就可以拉取我们的代码了

构建触发器

poll SCM(日常表 可以根据时间来判断)

H/2 * * * * (2分钟检查一下版本库 如果有更新就不触发 如果没有更新就不触发)

注:Schedule的配置规则是有5个空格隔开的字符组成,从左到右分别代表:分 时 天 月 年。*代表所有,0 20 * * * 表示“在任何年任何月任何天20点0分”进行构建

1240

构建

execute shell

cd django 项目目录

python mange.py test 测试代码

1240

构建后的操作

选择 email notifications

输入你的邮箱 选中每次不稳定的构建都发送邮件

1240

八、创建部署项目

创建一个新的job

itemname : master deploy

copyfrom : master-build 点击ok

1240

1240

修改触发器

Build after other projects are built (勾选这一项)

projects to watch (master_build) 当前一个动作构建成功后我才触发

1240

构建

cd testdjango

BUILD_ID=DONTKILLME nohup python manage.py runserver 0.0.0.0:8000 &

BUILD_ID=DONTKILLME : 在jenkins里面在后台运行的程序都会被jenkins自动杀死 所以需要加上BUILDID这个参数 加了这个参数你的程序就不会被杀死

1240

最后提交并构建!

一旦用pycharm修改项目,并push上去,jenkins就会每两分钟检查一次是否改变,如果改变就会触发构建!

1240

1240

创建一个job webhook钩子 只要收到一个push请求 就会发送一个post的请求给jenkins

第一步 创建项目

创建任务 名字 master-build 自由代码风格

丢弃旧的构建 (保留7天,最大构建的最大数100)

源码管理 选择git 如果我们需要从码云拉取代码那么我们需要把私钥放到jenkins 公钥放到码云上面去 这样我们就可以拉取我们的代码了

ssh-keygen -t rsa -C "tanzhou@qq.com"

生成公钥和私钥

cat ~/.ssh/id_rsa.pub 发送给码云

cat ~/.ssh/id_rsa 写入到jenkins

构建触发器

poll SCM(日常表 可以根据时间来判断)

H/2 * * * * (2分钟检查一下版本库 如果有更新就不触发 如果没有更新就不触发)

注:Schedule的配置规则是有5个空格隔开的字符组成,从左到右分别代表:分 时 天 月 年。*代表所有,0 20 * * * 表示“在任何年任何月任何天20点0分”进行构建

构建

execute shell

cd testdjango #进入项目所在的目录

python mange.py test

构建后操作

选择 email notifications

输入你的邮箱 选中每次不稳定的构建都发送邮件

创建一个构建job

创建一个新的job

itemname : master deploy

copyfrom : master-build 点击ok

其他都不需要改 只需要改2个地方

第一个地方

构建触发器

Build after other projects are built (勾选这一项)

projects to watch (master_build) 当前一个动作构建成功后我才触发

第二个地方

构建

cd testdjango

BUILD_ID=DONTKILLME nohup python manage.py runserver 0.0.0.0:8000 &

BUILD_ID=DONTKILLME : 在jenkins里面在后台运行的程序都会被jenkins自动杀死 所以需要加上BUILDID这个参数 加了这个参数你的程序就不会被杀死

linux升级python 由于django1.7之后的版本就不支持python2.6了 所有需要我们升级python2.6--python2.7

yum -y install zlib zlib-devel openssl openssl-devel sqlite-devel

#wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2

#tar -jxvf Python-2.7.3.tar.bz2

#cd Python-2.7.3

#./configure --prefix=/usr/local/python2.7

#make

#make install

cd /usr/bin/

mv python python2.6.bak

ln -s /usr/local/python2.7/bin/python /usr/bin/python

---

install setuptools

wget https://pypi.python.org/packages/61/3c/8d680267eda244ad6391fb8b211bd39d8b527f3b66207976ef9f2f106230/setuptools-1.4.2.tar.gz

tar xvf setuptools-1.4.2.tar.gz

cd setuptools

python setup.py install

install pip

wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate

tar xvf pip-1.5.4.tar.gz

cd pip-1.5.4

python setup.py install

ln -s /usr/local/python2.7/bin/pip /usr/bin/pip

pip install django

免密码登录

$ scp ~/.ssh/id_rsa.pub root@:pub_key //将文件拷贝至远程服务器

$ cat ~/pub_key >>~/.ssh/authorized_keys //将内容追加到authorized_keys文件中, 不过要登录远程服务器来执行这条命令

cd /data/django11/testdjango

git pull

BUILD_ID=DONTKILLME nohup python manage.py runserver 0.0.0.0:8000 &

exit

ssh root@172.16.147.21 'bash -x -s' < /data/sh/startdj.sh

另外,如果是对自动化运维感兴趣的朋友,可以加入群:526929231,一起学习和讨论哦~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值