magicnet

Jenkins+Node.js部署完整版

一, 简介

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

部署流程

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

  1. 开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVN、GIT仓库即可。 war 源码多 自动把代码放到服务器上面
  2. 运维人员:减轻人工干预的错误率,ansible 一键完成了 同时解放运维人员繁杂的上传代码、手动备份、更新
  3. 测试人员:可以通过jenkins进行简单的代码及网站测试
  4. 持续集成的意义(总结 提升工作效率)
  5. 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量
  6. 持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能
  7. 持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心

持续集成的组件

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

二、jenkins安装

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

  • Ubuntu 16.4安装 apt安装
root@python-dev:~#sudo apt-get install jenkins
root@python-dev:~#wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
root@python-dev:~#sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
root@python-dev:~#sudo apt-get update #更新
root@python-dev:~#sudo apt-get install jenkins #安装
root@python-dev:~# lsof -i :8080
COMMAND  PID    USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    2113 jenkins  163u  IPv6 1130834      0t0  TCP *:http-alt (LISTEN)

root@python-dev:~#/etc/init.d/jenkins start
root@python-dev:~#/etc/init.d/jenkins status
  • 浏览器登录操作 image

    打开复制内容到对话框中

/var/lib/jenkins/secrets/initialAdminPassword
  • 插件安装 image

  • 浏览器界面 image

三、构建nodejs项目

构建

npm install
npm run build
  • 安装nodejs和npm Ubuntu 16.4下 最后使用Ubuntu提示的方式安装:
apt install nodejs
apt all npm

成功安装,但是版本很老,

node4.2.6
npm -v 3.2

终于发现了一个可以管理node版本的第三方库,n来自tj大神。 安装n有几种方式,最快捷的是用npm安装,前面的安装已经为这里打好了铺垫,现在只需要运行npm install -g n,安装好后升级nodejsn latest

Use or install the latest official release: 最新版本

$ n latest

Use or install the stable official release:最终稳定版本

$ n stable

升级nodejs,里面包好npm

root@python-dev:~# nodejs -v
v4.2.6
root@python-dev:~# npm -v
3.5.2
root@python-dev:~# npm install -g n
/usr/local/bin/n -> /usr/local/lib/node_modules/n/bin/n
/usr/local/lib
└── n@2.1.8 

root@python-dev:~# n latest

     install : node-v10.0.0
       mkdir : /usr/local/n/versions/node/10.0.0
       fetch : https://nodejs.org/dist/v10.0.0/node-v10.0.0-linux-x64.tar.gz
######################################################################## 100.0%
   installed : v10.0.0

创建软链接

/usr/bin/npm -> /usr/local/n/versions/node/10.0.0/bin/npm*
/usr/bin/node -> /usr/local/bin/node*

执行过程

Started by user admin
Building in workspace /var/lib/jenkins/workspace/oms-front
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url git@gitee.com:zksfyz/oms-front.git # timeout=10
Fetching upstream changes from git@gitee.com:zksfyz/oms-front.git
 > git --version # timeout=10
using GIT_SSH to set credentials 
 > git fetch --tags --progress git@gitee.com:zksfyz/oms-front.git +refs/heads/*:refs/remotes/origin/*
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 0f492fcff18b22453dddccb64ca62375ca6ce932 (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 0f492fcff18b22453dddccb64ca62375ca6ce932
Commit message: "info"
 > git rev-list --no-walk 0f492fcff18b22453dddccb64ca62375ca6ce932 # timeout=10
[oms-front] $ /bin/sh -xe /tmp/jenkins7286888876159821243.sh
+ npm install
npm WARN ajv-keywords@3.2.0 requires a peer of ajv@^6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN sweet-demo@1.2.31 No repository field.
npm WARN sweet-demo@1.2.31 No license field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.3 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

up to date in 19.009s
+ npm run build

 

posted @ 2018-05-18 09:25  zksfyz  阅读(1426)  评论(0编辑  收藏  举报