一、简介

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

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

一般是运维来做 功能测试 上线的时间 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

三、升级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

七、创建项目

总结

第一步 创建项目

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

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

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

构建触发器

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

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

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

构建

execute shell

cd django 项目目录

python mange.py test 测试代码

构建后的操作

选择 email notifications

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

八、创建部署项目

创建一个新的job

itemname : master deploy

copyfrom : master-build 点击ok

修改触发器

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这个参数 加了这个参数你的程序就不会被杀死

最后提交并构建!

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

创建一个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,一起学习和讨论哦~~

jenkins构建python代码_Jenkins+Python完整版相关推荐

  1. 「python自学建议贴」Python学习路线+视频教程完整版

    前言 最近有些朋友问我如何尽快入门Python,还有些是想从别的职业转行过来,但都不太了解Python开发究竟需要学什么,究竟要从哪里学起,哪些是主流的Python技术等等,导致想学,但又很迷茫,不知 ...

  2. 求知讲堂python+人工智能 99天完整版 学完可就业+某某教程Python 100例————作业(持续更新)

    个人答案仅供参考,不喜勿喷. 求知讲堂python+人工智能 99天完整版 学完可就业 1.day1 1. import random index=1 error=0 age=random.randi ...

  3. python代码块-python代码块

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 开发准备cas 的 python sdk 包含了用于访问和操作 cas ...

  4. Vue2+VueRouter2+webpack 构建项目实战系列(完整版) - 收录篇

    以下为收录的CSDN博客专家 · 博文系列: Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(一)基础知识概述 Vue2+VueRouter2+Webpack+ ...

  5. python代码学习——python文件处理及路径处理

    python代码学习--python文件处理 存储相关 路径处理 os.path 目录的新建与删除 路径操作 绝对/相对路径方式获取路径信息 路径拼接和realpath方法 路径拼接 realpath ...

  6. python代码格式-Python 代码格式

    原标题:Python 代码格式 在格式方面与其他大众语言相差不大,但也有它独特之处,尤其是代码缩进.在其他的编程语言中,代码缩进大多是为了美观,程序.函数的开始结束都是由花括号来控制的.在Python ...

  7. 如何保护你的 Python 代码—— 定制 Python 解释器

    0 前言 考虑前文所述的几个方案,均是从源码的加工入手,或多或少都有些不足.假设我们从解释器的改造入手,会不会能够更好的保护代码呢? 由于发行商业 Python 程序到客户环境时通常会包含一个 Pyt ...

  8. 派大星python代码,简单python代码类型有哪些?

    简单python代码类型有哪些? 简单python代码类型有: 1.[背景] 最近,派大星想要减肥,他决定控制自己的饮食,少吃一点蟹黄堡. 海绵宝宝为了帮助好朋友派大星,和派大星一起制定了一个饮食游戏 ...

  9. python代码库-Python常用库大全

    Python常用库大全,看看有没有你需要的. 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具 ...

最新文章

  1. 【分治】P1228 地毯填补问题(多联骨牌覆盖棋盘问题)(递归,分治)难度⭐⭐⭐
  2. InfoPath Forms Services的配置
  3. visual studio 2005,visual studio 2008调出即时窗口
  4. [CF850F] Rainbow Balls
  5. mysql show 命令_mysql show 相关命令
  6. v-model双向绑定原理_【Vue原理】VModel 白话版
  7. 转载自(梦想天空)【必备】史上最全的浏览器 CSS JS Hack 手册
  8. python库--tensorflow--数学函数
  9. Android 中的长度单位详解 dp、sp、px、in、pt、mm 转载
  10. Soul持续发力社交渠道赴港上市,“Soul式社交”凭什么火出圈?
  11. 产品的思维与技术的思维差异
  12. php unlink 无法删除,php unlink 删除有关问题
  13. 【Luogu P1151】子数整数
  14. mysql表分区join_​实战:Flink 1.12 维表 Join Hive 最新分区功能体验
  15. Cadence Allegro学习之查询命令+测量长度
  16. 用画中画剪辑技巧,给每个视频添加背景图片
  17. 深度学习在计算机视觉领域图像应用总结
  18. 三大战略分析方法——SWOT、PEST、波特五力模型
  19. 构建工具承担了哪些工作?
  20. Latex 中目录生成超链接

热门文章

  1. 淡雅唯美荷花中国风PPT模板
  2. 如何知道微信好友是否删除了自己?
  3. 黑社会交易用计算机,遭遇网络黑社会亲们都是怎么处理的
  4. 专题地图的编制(一)页面布局设计
  5. DATAX 数据迁移 oracle-oracle
  6. Java 23种设计模式全归纳 | 已打包请带走
  7. python中正则表达式来验证QQ号,手机号,邮箱号,身份证号
  8. win10定时执行python脚本实现自动订餐
  9. 把学生名与考试分数录入到集合中,并按分数显示前三名成绩学员的名字
  10. 微观经济学14周作业(博弈论)