一、Jenkins的优点

1、传统网站部署流程

  一般网站部署的流程 这边是完整流程而不是简化的流程 
需求分析—原型设计—开发代码—内网部署-提交测试—确认上线—备份数据—外网更新-最终测试 
,如果发现外网部署的代码有异常,需要及时回滚,一般是运维来做。

1、功能测试 2、上线的时间 3、 jenkins 4、运维 5、功能测试

2、Jenkins部署流程

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

  1. 开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVN、GIT仓库即可。 war 源码多 自动把代码放到服务器上面
  2. 运维人员:减轻人工干预的错误率,ansible 一键完成了 同时解放运维人员繁杂的上传代码、手动备份、更新
  3. 测试人员:可以通过jenkins进行简单的代码及网站测试

3、持续集成的意义 增加工作效率

  1. 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量
  2. 持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能
  3. 持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心

4、持续集成的组件

    1. 一个自动构建过程,包括自动编译、分发、部署和测试
    2. 一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,例如SVN、GIT代码库
    3. 一个jenkins持续集成服务器就是一个配置简单和使用方便的持续集成服务器

二.部署项目

1.创建Jenkins项目

  登录Jenkins,点击新建项目  

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

3.码云获取HTTP地址  http://172.16.1.161/auto_test/byxf_qa.git(可以通过git对应的地址)

4.Jenkins中配置码云中的地址,并添加登录名密码

三.Jenkins脚本

1.登录部署项目服务器

2.执行脚本

3.脚本内容如下

pwd
cd /root/

mv -f /root/api_auto/static /root/static (移动static下面的所有内容,主要为了保存上传服务器的文件,图片,excel等 )
rm -rf api_auto/* (删除api_auto文件夹下所有内容)
a=`netstat -apn|grep 9000`  (执行shell命令并获取结果)
echo $a
if [ -n "$a" ]; then  (判断如果有返回值)
echo "端口不为空 匹配端口杀掉进程"
port=`netstat -apn|grep 9000|awk '{ print $7 }'|awk -F/ '{ print $1 }' `  (获取匹配到端口的进程id)
echo $port
kill -9 $port  (杀掉进程)

fi
pwd
echo "api_auto目录已被清空"

4.将代码拉倒项目目标服务器上

5.继续登录139服务器,启动服务即可

当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件。对于密集访问磁盘的进程,我们更希望它能够在每天的非负荷高峰时间段运行(例如凌晨)。为了使这些进程能够在后台运行,也就是说不在终端屏幕上运行,有几种选择方法可供使用。

  • &  
    当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行。例如:sh test.sh & 
    适合在后台运行的命令有f i n d、费时的排序及一些s h e l l脚本。在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:
  • 1

这样,所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。

PS:当你成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。(ps -ef | grep 进程号 或者 kill -9 进程号)

  • nohup 
    使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。nohup命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:
  • 1

如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

  • 1

使用了nohup之后,很多人就这样不管了,其实这样有可能在当前账户非正常退出或者结束的时候,命令还是自己结束了。所以在使用nohup命令后台运行命令之后,需要使用exit正常退出当前账户,这样才能保证命令一直在后台运行。

  • ctrl + z 
    可以将一个正在前台执行的命令放到后台,并且处于暂停状态。

  • Ctrl+c 
    终止前台命令。

  • jobs 
    查看当前有多少在后台运行的命令。 
    jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。

  • 2>&1解析
  • 1
    1. command>out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。
    2. 2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个&, 是让该命令在后台执行。
    3. 试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.

echo "在139服务了"
cd /root/api_auto/
rm -rf /root/api_auto/static  (删除从git上拉下来的static文件夹)
cp -rf /root/static /root/api_auto/static (复制原来的static文件夹)
rm -rf /root/static (再把原来的删除掉)
pwd
mkdir log (创建日志文件夹)
chmod u+x *.sh
echo "完成"

最新文章

  1. sublime下安装ctags
  2. android免root兼容所有版本ui调试工具
  3. UNIX环境高级编程笔记之进程环境
  4. 部署服务--NLB
  5. js data日期初始化的5种方法new Date()
  6. [JavaWeb]SpringSecurity-OAuth2.0 统一认证、资源分离的配置,用于分布式架构、模块化开发的认证体系
  7. spring boot学习资源
  8. 团队作业6——展示博客(Alpha版本)
  9. java项目----衣服购买
  10. JavaScript对象 Object类型基础
  11. Dear ImGUI 使用指南
  12. python多线程-共享全局变量
  13. 使用PHPExcel导出数据库表结构及内容
  14. Ibatis中的<trim>标签应用
  15. 「LibreOJ Round #6」花火
  16. RobotFramework 模拟http接口登录自动化脚本
  17. Git Windows 安装
  18. 我要搬家到csdn,大家到那里来看我吧,平台更大,看到的人更多!
  19. Kaggle:Home Credit Default Risk 数据探索及可视化(1)
  20. 从零开始学习Vue(一)

热门文章

  1. Pycharm远程解释器SFTP开发和调试
  2. Windows下给PHP安装redis扩展
  3. 00_02_使用Parallels Desktop创建Windos7虚拟机
  4. MYSQL的事物四大特性
  5. luogu P3223 [HNOI2012]排队
  6. IDEA、maven3.6.3安装、环境配置(windows10)
  7. 从零写一个Asp.net core手脚架 (异常处理)
  8. Linux常用命令之cp、mv、rm、cat、more、head、tail、ln命令讲解
  9. 【NOI2001】方程的解数 题解(dfs+哈希)
  10. 19-关键字package和import