前言

前面几篇文章下来,基本上一个web服务可以对外提供服务了,虽然现在啥都没有。那是后续的业务代码的编写问题了。
现在还有一个问题,也就是说,在开发环境上编写和调试完成后,这个包如何方便快捷的放到服务器上,如果是集群的话,难道要一个一个的拷贝上去?显然不可能。而且,我们现在只有一个模块,如果web系统有N多个模块的话,我们需要手动的一个一个去npm build么?如果有前后依赖关系的话,这个工作量不是一般的大。所以,这样我们就要用到部署的大杀器:Jenkins

Jenkins能干嘛

搬运百度百科的内容:
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Jenkins功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
通俗的讲,我们可以用jenkins工具一键式的编译、构建、测试(自动化测试脚本)和部署(发布到配置好的环境)。一次配置,多次使用。

安装

直接安装

  1. 确认自己的操作系统版本:
    lsb_release -a

  2. 我的是Ubantu系统,参考Jenkins在Ubantu系统的安装
    问题一:
    安装之后,系统会将jenkins作为一个系统服务来启动。在我的服务器上出错了。使用:

     service jenkins status
    

    来查看一下:

     Jun 20 18:03:12 ecs-ec12-0004 systemd[1]: Starting LSB: Start Jenkins at boot time...
     Jun 20 18:03:12 ecs-ec12-0004 jenkins[14338]: ERROR: No Java executable found in current PATH: /bin:/usr/b
     Jun 20 18:03:12 ecs-ec12-0004 jenkins[14338]: If you actually have java installed on the system make sure
     Jun 20 18:03:12 ecs-ec12-0004 systemd[1]: jenkins.service: Control process exited, code=exited status=1
     Jun 20 18:03:12 ecs-ec12-0004 systemd[1]: Failed to start LSB: Start Jenkins at boot time.
     Jun 20 18:03:12 ecs-ec12-0004 systemd[1]: jenkins.service: Unit entered failed state.
     Jun 20 18:03:12 ecs-ec12-0004 systemd[1]: jenkins.service: Failed with result 'exit-code'.
    

    提示Failed to start LSB,这是因为jenkins会启动一个web容器对外提供服务,端口为8080,而我的服务器上启动了node,也是占用了8080,。所以,先停掉node就可以了。
    查看下端口占用:

     netstat -nat
    

    端口占用
    问题二:
    还有一个问题是java环境设置的问题。
    我的jdk安装在/usr/local/jdk中。
    启动jenkins服务后报错:

     ERROR: No Java executable found in current PATH: /bin:/usr/bin:/sbin:/usr/sbin
    

    我查了环境变量: PATH和JAVA_HOME都是设置正确的,没办法,只能设置一个软连接了:

     ln -s /usr/local/jdk/bin/java /usr/bin/java
    

    再启动,OK了。
    启动成功
    接下来跟着配置指导一步一步设置就OK了。

还有一种办法就是使用war包进行部署,我懒的去试了,有兴趣的网上一搜一大把。

打包部署

  1. 下载nodejs插件:
    首页 => Manage Jenkins => Manage Pllugins => 可选插件。
    搜索 nodejs
    立即安装
    在 更新中心 可以查看进度

  2. 配置nodejs工具
    首页 => Manage Jenkins => Global Tool Configuration

  3. 配置的话,我搬运一篇文章过来:
    jenkins详细配置
    这里有一点需要注意下:
    jenkins是把Git地址上的代码下载到本地,然后打包,所以需要先安装依赖包: npm install 然后再构建。
    构建
    还有一些比如java, c++, python等代码的应该也可以依葫芦画瓢,后续有需要再搞吧。

发布到其他服务器

一般来说,现在很多应用都是基于集群的,那么一个组件肯定是打包之后需要发布到其他环境的(带着不同的配置文件),我们可以在“构建后操作”中来做这个事情。

  1. 安装插件:SSH Publishers
    安装后就可以在任务的配置界面的"构建后操作"里多了一个新的选项:
    新增选项
    选择后就可以填写一些内容了
    SSH配置
    这里的SSH Server是下拉框,先需要在 系统管理 => 系统设置 => Publish over SSH里进行设置:
    新增SSH节点
    点击高级,选择Use password,输入密码
    密码
    配置完之后就这个样子:
    配置
    source file: 以项目的根目录为根目录的相对路径
    remote directory: 以SSH Server配置的remote directory为根目录的相对路径

妥了,直接就可以把打包之后的dist发送到相应的web服务器了。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐