天天看點

springboot+vue 項目持續部署

安裝nodejs

  • 下載下傳
    wget  https://nodejs.org/dist/latest-v8.x/node-v8.11.3-linux-x64.tar.gz    
               
  • 解壓
    tar -zxvf node-v8.11.3-linux-x64.tar.gz    
               
  • 建立軟連結
    cd node-v8.11.3-linux-x64/bin        
    sudo ln -s node /usr/local/bin/node    
    sudo ln -s npm /usr/local/bin/npm        
               
  • 檢視版本
    node -v
    npm -v
               

jenkins設定

  • 建立job:省略
  • 設定pom編譯前執行的指令:
    • 進入到工程目錄,npm安裝和webpack
      cd jenkins下該項目的workspace
         npm install
         node_modules/.bin/webpack
         
                 

出現錯誤1:

[INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ testProject ---
[INFO] 
[INFO] --- exec-maven-plugin:1.5.0:exec (npm install (initialize)) @ testProject ---
[ERROR] Command execution failed.
java.io.IOException: Cannot run program "npm" (in directory "/home/jenkins/workspace/testProject"): error=2, No such file or directory
           
  • 解決:

    在指令行檢視npm -v就知道真相了。這是nodejs安裝前,或是安裝後沒把指令放到/usr/local/bin時出的錯誤。

出現錯誤2:從jenkins控制台看資訊,執行到npm install就沒有下文了,一直跳舞中。。。

  • 解決:進入指令行執行pom編譯前執行的指令,即
    # cd jenkins下該項目的workspace
         # npm install  //出現了錯誤4
         # node_modules/.bin/webpack
    執行後,node_modules檔案夾就出現在工程目錄了。
               
  • 注:
    • 不知道根本原因,講道理的話,在jenkins配置執行指令也該好使。
    • 第一次在指令行執行後,下次jenkins編譯就不會出這個問題了。

出現錯誤3:釋出成功後,通路url,500錯誤,錯誤資訊截取如下:

javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: when resolving method "org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(Ljavax/servlet/ServletConfig;)Lorg/apache/tomcat/InstanceManager;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/WEB_002dINF/jsp/login_jsp, and the class loader (instance of java/net/URLClassLoader) for the method's defining class, org/apache/jasper/runtime/InstanceManagerFactory, have different Class objects for the type org/apache/tomcat/InstanceManager used in the signature
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:358) ~[jasper.jar:8.0.9]
           
  • 原因:外部tomcat的jar包與springboot内置tomcat的jar包沖突導緻
  • 解決: pom.xml修改
    <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-tomcat</artifactId>
           <scope>provided</scope>
       </dependency> 
               

    重新jenkins釋出後,通路正常。

    修改pom後,項目下WEB-INF/lib下的jar包沒有了這仨包:tomcat-embed-core-8.5.11.jar, tomcat-embed-el-8.5.11.jar,tomcat-embed-websocket-8.5.11.jar

    springboot+vue 項目持續部署

出現錯誤4:在指令行進入到項目的workspace執行npm install出現如下錯誤

Miscellaneous Warning ETIMEDOUT: request to https://registry.npmjs.org/karma-phantomjs-launcher fail
           
  • 解決:

執行 $ npm config list

; cli configs
metrics-registry = "https://registry.npmjs.org/"
scope = ""
user-agent = "npm/5.6.0 node/v8.11.3 linux x64"

; node bin location = /usr/local/src/node-v8.11.3-linux-x64/bin/node
; cwd = /tmp/phantomjs
; HOME = /home/tomcat
; "npm config ls -l" to show all defaults.
           

執行 $ npm config set registry http://registry.npmjs.org/

執行 $ npm config list

; cli configs
metrics-registry = "http://registry.npmjs.org/"
scope = ""
user-agent = "npm/5.6.0 node/v8.11.3 linux x64"

; userconfig /home/tomcat/.npmrc
registry = "http://registry.npmjs.org/"

; node bin location = /usr/local/src/node-v8.11.3-linux-x64/bin/node
; cwd = /tmp/phantomjs
; HOME = /home/tomcat
; "npm config ls -l" to show all defaults.