手把手教你搭建Jenkins實現自動化部署Jar

  • 2019 年 10 月 7 日
  • 筆記

centeros7 安裝配置環境jdk1.8

1.先卸載centeros自帶jdk

rpm -qa | grep openjdk  

查詢出來的自帶的openjdk

2.刪除

rpm -e --nodeps  

3.再次查詢

rpm -qa | grep jdk  

4.在usr/local創建文件夾

cd /usr/local  mkdir java

5.將jdk1.8放到剛剛創建的文件中

cd  /usr/local/java  

用xftp上傳後解壓

tar -zxvf  jdk-8u181-linux-x64.tar.gz  

6.進入剛剛解壓的文件夾

cd jdk1.8.0_181/  pwd      #(這一步記錄jdk1.8的路徑,一會配置環境用)  

7.配置環境

vim /etc/profile  

按i插入下面路徑

export JAVA_HOME=/usr/local/java/jdk1.8.0_181  export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  export PATH=$PATH:$JAVA_HOME/bin  

按Esc後:wq退出後

source /etc/profile  

8.查看是否成功

java -version  

maven 環境配置

1.在/usr/local 下創建maven文件夾

cd /usr/local  mkdir maven  

2.進去新建的文件夾

cd maven  

上傳 apache-maven-3.5.4-bin.zip

3.解壓

unzip apache-maven-3.5.4-bin.zip

4.進入解壓的文件夾

cd apache-maven-3.5.4/pwd   #(記錄下這個路徑,一會配置環境用到)

5.配置環境

vim /etc/profile  

按i插入下面

export MAVEN_HOME=/usr/local/maven/apache-maven-3.5.4  export PATH=$PATH:$MAVEN_HOME/bin  

按Esc後:wq保存後

source /etc/profile

6.查看是否成功

mvn -v  

centeros7安裝git

yum install git  

一路下來y即可

查看是否是成功

git --version

查看git命令地址

which -a git  

到此環境已經搭建好,開始對maven私服,gitlab搭建。

gitlab搭建

1.新建 /etc/yum.repos.d/gitlab-ce.repo

vim /etc/yum.repos.d/gitlab-ce.repo  

後按下 i 鍵 插入下面內容

[gitlab-ce]  name=Gitlab CE Repository  baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/  gpgcheck=0  enabled=1  

2.

sudo yum makecache    sudo yum install gitlab-ce  #(安裝最新的)      或   sudo yum install gitlab-ce-12.0.4 #(指定版本號)  

3.配置 external_url

vim /etc/gitlab/gitlab.rb  

修改external_url地址 為: http://本機地址:埠號/

本機地址查看:ifconfig

查看埠號運行的應用 lsof -i:埠號

4.

gitlab-ctl reconfigure  

5.

gitlab-ctl restart #啟動    gitlab-ctl start|stop|status|restart # 其他操作  

6.訪問

http://本機地址:埠號/  

常見問題 gitlab502 : 這個是埠被佔用

確保埠不被佔用後從4開始繼續來一遍

centeros7 搭建maven私服

下載nexus3.x:

https://www.sonatype.com/download-oss-sonatype

1.在/usr/local下創建nexus文件

cd /usr/local  mkdir nexus  cd nexus  

2.上傳剛剛下載的nexus壓縮包並解壓

tar -zxvf nexus-3.18.1-01-unix.tar.gz  

3.

cd nexus-3.18.1-01/bin/  ls  

4.啟動

./nexus run &  

5.開啟遠程訪問埠

firewall-cmd --zone=public --add-port=8081/tcp --permanent  firewall-cmd --reload  

瀏覽器訪問

6.設置開機自啟動

1.創建服務

vim /usr/lib/systemd/system/nexus.service  

2.按i將下面複製進去

[Unit]  Description=nexus service    [Service]  Type=forking LimitNOFILE=65536 #警告處理  ExecStart=/usr/local/nexus/nexus-3.7.1-02/bin/nexus start  ExecReload=/usr/local/nexus/nexus-3.7.1-02/bin/nexus restart  ExecStop=/usr/local/nexus/nexus-3.7.1-02/bin/nexus stop  Restart=on-failure    [Install]  WantedBy=multi-user.target  

3.將服務加入開機啟動

systemctl enable nexus.service  

4.重新載入配置文件

systemctl daemon-reload  

7.運行用戶為root (編輯nexus bin下的nexus.rc)

cd /usr/local/nexus/nexus-3.18.1-01/bin/vim nexus.rc  

內容改為:

run_as_user="root"  

8.修改nexus3啟動時要使用的jdk版本

cd /usr/local/nexus/nexus-3.18.1-01/bin/  vim nexus  

按i將下面添加進去

INSTALL4J_JAVA_HOME_OVERRIDE=/usr/local/java/jdk1.8.0_181  

java_home地址可以用echo $JAVA_HOME 輸出 (前提是/etc/profile有export)

9.修改nexus3默認埠

文件在nexus-xx

etc/nexus-default.properties  

這裡已經搭建好了,下面是deploy到私服和從私服上下載下來測試

1.創建facade 上傳到私服

在/usr下創建projects

cd  /usr  mkdir projects

將改zip解壓到projects進入到pom.xml所在目錄

mvn deploy -Dmaven.test.skip=true -U  

已經上傳成功

這裡要把Allow anonymous users to access the server(允許匿名用戶訪問伺服器)

因為本地maven沒有配置用戶

也可以用idea maven命令depoly

<?xml version="1.0" encoding="UTF-8"?>  <project xmlns="http://maven.apache.org/POM/4.0.0"           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"           xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">      <modelVersion>4.0.0</modelVersion>          <groupId>com.netease</groupId>      <artifactId>maven_test_demo</artifactId>      <version>1.0.0-SNAPSHOT</version>      <packaging>jar</packaging>        <!-- 定義常量 -->      <properties>          <java.version>1.8</java.version>          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>          <maven-compiler-plugin.version>3.6.1</maven-compiler-plugin.version>          <nexus.host>192.168.20.143:8081</nexus.host>      </properties>        <!-- 定義deploy私服地址及id (這裡的id 應該和maven conf中settings中server標籤中的一致)-->      <distributionManagement>          <repository>              <id>nexus-releases</id>              <name>Nexus Private Release Repository</name>              <url>http://${nexus.host}/repository/maven-releases</url>          </repository>          <snapshotRepository>              <id>nexus-snapshots</id>              <name>Nexus Private Snapshot Repository</name>              <url>http://${nexus.host}/repository/maven-snapshots</url>          </snapshotRepository>      </distributionManagement>        <!-- 定義編譯: https://blog.csdn.net/jiachunchun/article/details/90235498 -->      <build>          <finalName>${project.artifactId}-${project.version}</finalName>          <plugins>              <plugin>                  <groupId>org.apache.maven.plugins</groupId>                  <artifactId>maven-compiler-plugin</artifactId>                  <version>${maven-compiler-plugin.version}</version>                  <configuration>                      <source>${java.version}</source>                      <target>${java.version}</target>                      <encoding>${project.build.sourceEncoding}</encoding>                  </configuration>              </plugin>          </plugins>      </build>      </project>  

settings.xml中servers中定義的id一致

在settings 添加下面鏡像

    <mirror>          <id>Central</id>          <url>http://repo1.maven.org/maven2</url>          <mirrorOf>central</mirrorOf>      </mirror>  

最後settings文件。到這兒jar包已經可以發布到私服上去了

再看怎麼拉取的

maven_demo_impl項目的pom.xml

<?xml version="1.0" encoding="UTF-8"?>  <project xmlns="http://maven.apache.org/POM/4.0.0"           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"           xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">      <modelVersion>4.0.0</modelVersion>          <groupId>com.netease</groupId>      <artifactId>maven_demo_impl</artifactId>      <version>1.0-SNAPSHOT</version>          <parent>          <groupId>org.springframework.boot</groupId>          <artifactId>spring-boot-starter-parent</artifactId>          <version>2.0.5.RELEASE</version>          <relativePath/> <!-- lookup parent from repository -->      </parent>        <!-- 定義常量 -->      <properties>          <java.version>1.8</java.version>          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>          <maven-compiler-plugin.version>3.6.1</maven-compiler-plugin.version>          <nexus.host>192.168.20.143:8081</nexus.host>          <spring-cloud.version>Finchley.SR1</spring-cloud.version>      </properties>        <!-- 定義倉庫地址 -->      <repositories>          <repository>              <id>nexus-aliyun-repo</id>              <name>nexus aliyun repo</name>              <url>http://maven.aliyun.com/nexus/content/groups/public</url>          </repository>          <!-- 私服 -->          <repository>              <id>maven-public</id>              <name>maven public</name>              <url>http://192.168.20.143:8081/repository/maven-public/</url>          </repository>      </repositories>        <dependencyManagement>          <dependencies>              <dependency>                  <groupId>org.springframework.cloud</groupId>                  <artifactId>spring-cloud-dependencies</artifactId>                  <version>${spring-cloud.version}</version>                  <type>pom</type>                  <scope>import</scope>              </dependency>          </dependencies>      </dependencyManagement>        <!-- 依賴 -->      <dependencies>          <dependency>              <groupId>org.springframework.cloud</groupId>              <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>          </dependency>          <dependency>              <groupId>com.netease</groupId>              <artifactId>maven_test_demo</artifactId>              <version>1.0.0-SNAPSHOT</version>          </dependency>      </dependencies>          <build>        <plugins>          <plugin>              <groupId>org.springframework.boot</groupId>              <artifactId>spring-boot-maven-plugin</artifactId>          </plugin>        </plugins>      </build>    </project>  

配置完成後就會自動去私服下載jar了

jenkins搭建

1.查看環境版本

java -version  #沒有的話查看上文jdk1.8安裝  mvn -v   #沒有的話查看上文maven安裝  git --version  # 沒有的話查看上文git安裝  

2.安裝jenkenis

添加Jenkins源:

sudo wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo  sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key  

3.安裝

yum install jenkins  

4.啟動

sudo service jenkins start  

5.訪問

http://ip:8080/             #jenkenis默認是8080  

第一次密碼:

vim /var/lib/jenkins/secrets/initialAdminPassword

點安裝推薦的插件(後面的選擇安裝不知道安裝什麼)

修改jenkins埠

vim /etc/sysconfig/jenkins  

將JENKINS_PORT="8080" ===> 修改成未佔用想修改的埠 JENKINS_PORT="8089"

重啟服務

service jenkins restart  

遇到的問題:重裝了JDK, java地址變了

啟動jenkins報錯: Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.

按提示輸入systemctl status jenkins.service

解決方法:

1> 查看當前Java的環境變數

echo $JAVA_HOME  

2> 複製Java的環境變數地址, 編輯/etc/init.d/jenkins文件, 指定位置添加該地址, 後綴附上/bin/java

vim /etc/init.d/jenkins  

重點是配置Jenkins:

1.配置全局jdk maven git

點Manage Jenkins(系統管理) –> Global Tool Configuaration(全局工具配置)

1.maven配置:配置settings.xml地址

2.配置jdk地址 (可以用echo $JAVA_HOME獲取)

3.git配置地址 可以用(which -a git查看)

4.maven配置地址

2.新建任務

3.配置任務

1.配置源碼管理 下面version是gitlab的版本號

Repository URL:訪問的倉庫名稱 Credentials:訪問賬目密碼或者ssh證書 Branch Specifier (blank for 『any』):訪問的分支,可以多個 源碼庫瀏覽器:選擇源碼庫伺服器 URL:源碼倉庫url Version:源碼庫伺服器版本號

2.配置構建

clean compile package install deploy -Dmaven.test.skip=true -U #將jar發布  

然後應用,配置完成!

3.在my view(我的視圖) -> 找到新建的項目 –> 點擊build now(立即構建)

在構建歷史中點擊剛剛的構建如下圖: #1 : 是構建的id ,控制台輸出: 可以看到具體的輸出

下面是輸入日誌 可以看到以前拉取到指定的項目master分支

Started by user root  Running as SYSTEM  Building in workspace /var/lib/jenkins/workspace/first  using credential fad2813a-c894-4386-ae16-11d6e6d349d4  Cloning the remote Git repository  Cloning repository http://192.168.20.137:9029/root/wx-ssm.git  > /usr/local/git/bin/git init /var/lib/jenkins/workspace/first # timeout=10  Fetching upstream changes from http://192.168.20.137:9029/root/wx-ssm.git  > /usr/local/git/bin/git --version # timeout=10  using GIT_ASKPASS to set credentials  > /usr/local/git/bin/git fetch --tags --progress http://192.168.20.137:9029/root/wx-ssm.git +refs/heads/*:refs/remotes/origin/*  > /usr/local/git/bin/git config remote.origin.url http://192.168.20.137:9029/root/wx-ssm.git # timeout=10  > /usr/local/git/bin/git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10  > /usr/local/git/bin/git config remote.origin.url http://192.168.20.137:9029/root/wx-ssm.git # timeout=10  Fetching upstream changes from http://192.168.20.137:9029/root/wx-ssm.git  using GIT_ASKPASS to set credentials  > /usr/local/git/bin/git fetch --tags --progress http://192.168.20.137:9029/root/wx-ssm.git +refs/heads/*:refs/remotes/origin/*  > /usr/local/git/bin/git rev-parse refs/remotes/origin/master^{commit} # timeout=10  > /usr/local/git/bin/git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10  Checking out Revision 47d13c3ca0bc12fc0465c3e4c582b2c542276eb6 (refs/remotes/origin/master)  > /usr/local/git/bin/git config core.sparsecheckout # timeout=10  > /usr/local/git/bin/git checkout -f 47d13c3ca0bc12fc0465c3e4c582b2c542276eb6  Commit message: "更新 pom.xml"  First time build. Skipping changelog.  [first] $ /project/java/maven/apache-maven-3.6.1/bin/mvn -s /project/java/maven/apache-maven-3.6.1/conf/settings.xml -gs /project/java/maven/apache-maven-3.6.1/conf/settings.xml clean package  [INFO] Scanning for projects...  [WARNING]  [WARNING] Some problems were encountered while building the effective model for com.guojin:gjmetal-wx-ssm:jar:1.0.0.1-SNAPSHOT  [WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.apache.httpcomponents:httpclient:jar -> version (?) vs 4.5.6 @ line 155, column 21  [WARNING]  [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.  [WARNING]  [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.  [WARNING]  [INFO]  [INFO] ---------------------< com.guojin:gjmetal-wx-ssm >----------------------  [INFO] Building gjmetal-wx-ssm 1.0.0.1-SNAPSHOT  [INFO] --------------------------------[ jar ]---------------------------------  [INFO]  [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ gjmetal-wx-ssm ---  [INFO]  [INFO] --- jacoco-maven-plugin:0.7.9:prepare-agent (pre-test) @ gjmetal-wx-ssm ---  [INFO] argLine set to -javaagent:/var/lib/jenkins/.m2/repository/org/jacoco/org.jacoco.agent/0.7.9/org.jacoco.agent-0.7.9-runtime.jar=destfile=/var/lib/jenkins/workspace/first/target/jacoco.exec,includes=com.gjmetal.*  [INFO]  [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ gjmetal-wx-ssm ---  [INFO] Using 'UTF-8' encoding to copy filtered resources.  [INFO] Copying 1 resource  [INFO]  [INFO] --- maven-compiler-plugin:3.6.1:compile (default-compile) @ gjmetal-wx-ssm ---  [INFO] Changes detected - recompiling the module!  [INFO] Compiling 27 source files to /var/lib/jenkins/workspace/first/target/classes  [INFO] -------------------------------------------------------------  [ERROR] COMPILATION ERROR :  [INFO] -------------------------------------------------------------  [ERROR] /var/lib/jenkins/workspace/first/src/main/java/com/gjmetal/Swagger2.java:[4,40] 程式包org.fuelteam.springboot.swagger2不存在  [ERROR] /var/lib/jenkins/workspace/first/src/main/java/com/gjmetal/Swagger2.java:[21,2] 找不到符號    符號: 類 EnableSwagger2  [INFO] 2 errors  [INFO] -------------------------------------------------------------  [INFO] ------------------------------------------------------------------------  [INFO] BUILD FAILURE  [INFO] ------------------------------------------------------------------------  [INFO] Total time:  9.183 s  [INFO] Finished at: 2019-08-23T17:05:09+08:00  [INFO] ------------------------------------------------------------------------  [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project gjmetal-wx-ssm: Compilation failure: Compilation failure:  [ERROR] /var/lib/jenkins/workspace/first/src/main/java/com/gjmetal/Swagger2.java:[4,40] 程式包org.fuelteam.springboot.swagger2不存在  [ERROR] /var/lib/jenkins/workspace/first/src/main/java/com/gjmetal/Swagger2.java:[21,2] 找不到符號  [ERROR]   符號: 類 EnableSwagger2  [ERROR] -> [Help 1]  [ERROR]  [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.  [ERROR] Re-run Maven using the -X switch to enable full debug logging.  [ERROR]  [ERROR] For more information about the errors and possible solutions, please read the following articles:  [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException  Build step 'Invoke top-level Maven targets' marked build as failure  Finished: FAILURE  

上面報錯是項目問題,可以看到已經拉取到項目了。所以要保證項目的正確性。

下面是正確的兩個項目運行實例

在搭建好gitlab nexus jenkins後實現自動發jar到私服及啟動jar項目

背景: gitlab nexus jenkins都已經完成了

1.從gitlab下載項目後發布jar到私服

重新配置gitlab地址:

配置maven命令:

clean compile package install deploy -Dmaven.test.skip=true -U  

點擊build now 然後看控制台輸出如下

Started by user root  Running as SYSTEM  Building in workspace /var/lib/jenkins/workspace/maven_home  using credential fad2813a-c894-4386-ae16-11d6e6d349d4  > /usr/local/git/bin/git rev-parse --is-inside-work-tree # timeout=10  Fetching changes from the remote Git repository  > /usr/local/git/bin/git config remote.origin.url http://192.168.20.143:8083/root/maven_demo.git # timeout=10  Fetching upstream changes from http://192.168.20.143:8083/root/maven_demo.git  > /usr/local/git/bin/git --version # timeout=10  using GIT_ASKPASS to set credentials  > /usr/local/git/bin/git fetch --tags --progress http://192.168.20.143:8083/root/maven_demo.git +refs/heads/*:refs/remotes/origin/*  > /usr/local/git/bin/git rev-parse refs/remotes/origin/master^{commit} # timeout=10  > /usr/local/git/bin/git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10  Checking out Revision a26adc740d331eabe5b0fb2a46b372dbf6673d2c (refs/remotes/origin/master)  > /usr/local/git/bin/git config core.sparsecheckout # timeout=10  > /usr/local/git/bin/git checkout -f a26adc740d331eabe5b0fb2a46b372dbf6673d2c  Commit message: "Update pom.xml"  > /usr/local/git/bin/git rev-list --no-walk a26adc740d331eabe5b0fb2a46b372dbf6673d2c # timeout=10  [maven_home] $ /project/java/maven/apache-maven-3.6.1/bin/mvn -s /project/java/maven/apache-maven-3.6.1/conf/settings.xml -gs /project/java/maven/apache-maven-3.6.1/conf/settings.xml clean compile package install deploy -Dmaven.test.skip=true -U  [INFO] Scanning for projects...  [INFO]  [INFO] --------------------< com.netease:maven_test_demo >---------------------  [INFO] Building maven_test_demo 1.0.0-SNAPSHOT  [INFO] --------------------------------[ jar ]---------------------------------  [INFO]  [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven_test_demo ---  [INFO] Deleting /var/lib/jenkins/workspace/maven_home/target  [INFO]  [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven_test_demo ---  [INFO] Using 'UTF-8' encoding to copy filtered resources.  [INFO] skip non existing resourceDirectory /var/lib/jenkins/workspace/maven_home/src/main/resources  [INFO]  [INFO] --- maven-compiler-plugin:3.6.1:compile (default-compile) @ maven_test_demo ---  [INFO] Changes detected - recompiling the module!  [INFO] Compiling 1 source file to /var/lib/jenkins/workspace/maven_home/target/classes  [INFO]  [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven_test_demo ---  [INFO] Using 'UTF-8' encoding to copy filtered resources.  [INFO] skip non existing resourceDirectory /var/lib/jenkins/workspace/maven_home/src/main/resources  [INFO]  [INFO] --- maven-compiler-plugin:3.6.1:compile (default-compile) @ maven_test_demo ---  [INFO] Nothing to compile - all classes are up to date  [INFO]  [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven_test_demo ---  [INFO] Not copying test resources  [INFO]  [INFO] --- maven-compiler-plugin:3.6.1:testCompile (default-testCompile) @ maven_test_demo ---  [INFO] Not compiling test sources  [INFO]  [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven_test_demo ---  [INFO] Tests are skipped.  [INFO]  [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven_test_demo ---  [INFO] Building jar: /var/lib/jenkins/workspace/maven_home/target/maven_test_demo-1.0.0-SNAPSHOT.jar  [INFO]  [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven_test_demo ---  [INFO] Using 'UTF-8' encoding to copy filtered resources.  [INFO] skip non existing resourceDirectory /var/lib/jenkins/workspace/maven_home/src/main/resources  [INFO]  [INFO] --- maven-compiler-plugin:3.6.1:compile (default-compile) @ maven_test_demo ---  [INFO] Nothing to compile - all classes are up to date  [INFO]  [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven_test_demo ---  [INFO] Not copying test resources  [INFO]  [INFO] --- maven-compiler-plugin:3.6.1:testCompile (default-testCompile) @ maven_test_demo ---  [INFO] Not compiling test sources  [INFO]  [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven_test_demo ---  [INFO] Tests are skipped.  [INFO]  [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven_test_demo ---  [INFO]  [INFO] --- maven-install-plugin:2.4:install (default-install) @ maven_test_demo ---  [INFO] Installing /var/lib/jenkins/workspace/maven_home/target/maven_test_demo-1.0.0-SNAPSHOT.jar to /var/lib/jenkins/.m2/repository/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven_test_demo-1.0.0-SNAPSHOT.jar  [INFO] Installing /var/lib/jenkins/workspace/maven_home/pom.xml to /var/lib/jenkins/.m2/repository/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven_test_demo-1.0.0-SNAPSHOT.pom  [INFO]  [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven_test_demo ---  [INFO] Using 'UTF-8' encoding to copy filtered resources.  [INFO] skip non existing resourceDirectory /var/lib/jenkins/workspace/maven_home/src/main/resources  [INFO]  [INFO] --- maven-compiler-plugin:3.6.1:compile (default-compile) @ maven_test_demo ---  [INFO] Nothing to compile - all classes are up to date  [INFO]  [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven_test_demo ---  [INFO] Not copying test resources  [INFO]  [INFO] --- maven-compiler-plugin:3.6.1:testCompile (default-testCompile) @ maven_test_demo ---  [INFO] Not compiling test sources  [INFO]  [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven_test_demo ---  [INFO] Tests are skipped.  [INFO]  [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven_test_demo ---  [INFO]  [INFO] --- maven-install-plugin:2.4:install (default-install) @ maven_test_demo ---  [INFO] Installing /var/lib/jenkins/workspace/maven_home/target/maven_test_demo-1.0.0-SNAPSHOT.jar to /var/lib/jenkins/.m2/repository/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven_test_demo-1.0.0-SNAPSHOT.jar  [INFO] Installing /var/lib/jenkins/workspace/maven_home/pom.xml to /var/lib/jenkins/.m2/repository/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven_test_demo-1.0.0-SNAPSHOT.pom  [INFO]  [INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ maven_test_demo ---  Downloading from nexus-snapshots: http://192.168.20.143:8081/repository/maven-snapshots/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven-metadata.xml  Progress (1): 776 B    Downloaded from nexus-snapshots: http://192.168.20.143:8081/repository/maven-snapshots/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven-metadata.xml (776 B at 6.5 kB/s)  Uploading to nexus-snapshots: http://192.168.20.143:8081/repository/maven-snapshots/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven_test_demo-1.0.0-20190827.062446-3.jar  Progress (1): 2.6 kB    Uploaded to nexus-snapshots: http://192.168.20.143:8081/repository/maven-snapshots/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven_test_demo-1.0.0-20190827.062446-3.jar (2.6 kB at 13 kB/s)  Uploading to nexus-snapshots: http://192.168.20.143:8081/repository/maven-snapshots/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven_test_demo-1.0.0-20190827.062446-3.pom  Progress (1): 2.1 kB    Uploaded to nexus-snapshots: http://192.168.20.143:8081/repository/maven-snapshots/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven_test_demo-1.0.0-20190827.062446-3.pom (2.1 kB at 19 kB/s)  Downloading from nexus-snapshots: http://192.168.20.143:8081/repository/maven-snapshots/com/netease/maven_test_demo/maven-metadata.xml  Progress (1): 286 B    Downloaded from nexus-snapshots: http://192.168.20.143:8081/repository/maven-snapshots/com/netease/maven_test_demo/maven-metadata.xml (286 B at 11 kB/s)  Uploading to nexus-snapshots: http://192.168.20.143:8081/repository/maven-snapshots/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven-metadata.xml  Progress (1): 776 B    Uploaded to nexus-snapshots: http://192.168.20.143:8081/repository/maven-snapshots/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven-metadata.xml (776 B at 4.6 kB/s)  Uploading to nexus-snapshots: http://192.168.20.143:8081/repository/maven-snapshots/com/netease/maven_test_demo/maven-metadata.xml  Progress (1): 286 B    Uploaded to nexus-snapshots: http://192.168.20.143:8081/repository/maven-snapshots/com/netease/maven_test_demo/maven-metadata.xml (286 B at 2.5 kB/s)  [INFO] ------------------------------------------------------------------------  [INFO] BUILD SUCCESS  [INFO] ------------------------------------------------------------------------  [INFO] Total time:  3.640 s  [INFO] Finished at: 2019-08-27T14:24:47+08:00  [INFO] ------------------------------------------------------------------------  Finished: SUCCESS  

2.將運行的jar發布到指定的機器

確保jenkins安裝了Publish Over SSH插件 Manage Jenkins -> Manage Plugins -> 搜索ssh

然後配置ssh

配置後點擊Test Configuration 出現success

配置完成後新建Item(項目)只是多加了一個構建後(注意前面的配置要想要的改 : 項目的git地址)

#最後一個執行的腳本放到的位置是/projects/scripts  mkdir scripts  vim run.sh  #按i將下面內容複製進去    Project_name=$1  Port_no=$2      #echo $Project_name  #echo $Port_no      . /etc/profile      # 進入到項目  cd /projects/$Project_name      # 找到原進程,kill  pid=$(ps -ef | grep java| grep $Project_name|awk -F '[ ]+' '{print $2}')  kill -9 $pid        #啟動jar  nohup java -jar $Project_name-1.0-SNAPSHOT.jar --server.port=$Port_no -server -Xmx1000m -Xms1000m -Xmn700m -XX:+UseParallelGC &    echo "starting service..."  sleep 20      #根據重啟後是否有當前應用判斷啟動是否成功  pid=$(ps -ef | grep java| grep $Project_name|awk -F '[ ]+' '{print $2}')  #echo $pid  if [ -z $pid ];then    echo "啟動失敗"    exit 1  else    echo $Project_name :  $pid  "SUCCESS"  fi  

現在立即構建 查看控制台輸出

Started by user root  Running as SYSTEM  Building in workspace /var/lib/jenkins/workspace/maven_demo_impl  using credential fad2813a-c894-4386-ae16-11d6e6d349d4  > /usr/local/git/bin/git rev-parse --is-inside-work-tree # timeout=10  Fetching changes from the remote Git repository  > /usr/local/git/bin/git config remote.origin.url http://192.168.20.143:8083/root/maven_demo_impl.git # timeout=10  Fetching upstream changes from http://192.168.20.143:8083/root/maven_demo_impl.git  > /usr/local/git/bin/git --version # timeout=10  using GIT_ASKPASS to set credentials  > /usr/local/git/bin/git fetch --tags --progress http://192.168.20.143:8083/root/maven_demo_impl.git +refs/heads/*:refs/remotes/origin/*  Seen branch in repository origin/master  Seen 1 remote branch  > /usr/local/git/bin/git show-ref --tags -d # timeout=10  Checking out Revision bf0f9bd981c053359167a0e46e517f4f936c8c98 (origin/master)  > /usr/local/git/bin/git config core.sparsecheckout # timeout=10  > /usr/local/git/bin/git checkout -f bf0f9bd981c053359167a0e46e517f4f936c8c98  Commit message: "Update TestDemoImpl.java"  > /usr/local/git/bin/git rev-list --no-walk bf0f9bd981c053359167a0e46e517f4f936c8c98 # timeout=10  [maven_demo_impl] $ /project/java/maven/apache-maven-3.6.1/bin/mvn -s /project/java/maven/apache-maven-3.6.1/conf/settings.xml -gs /project/java/maven/apache-maven-3.6.1/conf/settings.xml clean compile package -Dmaven.test.skip=true -U  [INFO] Scanning for projects...  [INFO]  [INFO] --------------------< com.netease:maven_demo_impl >---------------------  [INFO] Building maven_demo_impl 1.0-SNAPSHOT  [INFO] --------------------------------[ jar ]---------------------------------  Downloading from nexus-aliyun-repo: http://maven.aliyun.com/nexus/content/groups/public/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven-metadata.xml  Downloading from maven-public: http://192.168.20.143:8081/repository/maven-public/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven-metadata.xml  Progress (1): 776 B    Downloaded from maven-public: http://192.168.20.143:8081/repository/maven-public/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven-metadata.xml (776 B at 4.2 kB/s)  Downloading from nexus-aliyun-repo: http://maven.aliyun.com/nexus/content/groups/public/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven_test_demo-1.0.0-20190827.062446-3.pom  Downloading from maven-public: http://192.168.20.143:8081/repository/maven-public/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven_test_demo-1.0.0-20190827.062446-3.pom  Progress (1): 2.1 kB    Downloaded from maven-public: http://192.168.20.143:8081/repository/maven-public/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven_test_demo-1.0.0-20190827.062446-3.pom (2.1 kB at 47 kB/s)  Downloading from maven-public: http://192.168.20.143:8081/repository/maven-public/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven_test_demo-1.0.0-20190827.062446-3.jar  Progress (1): 2.6 kB    Downloaded from maven-public: http://192.168.20.143:8081/repository/maven-public/com/netease/maven_test_demo/1.0.0-SNAPSHOT/maven_test_demo-1.0.0-20190827.062446-3.jar (2.6 kB at 67 kB/s)  [INFO]  [INFO] --- maven-clean-plugin:3.0.0:clean (default-clean) @ maven_demo_impl ---  [INFO] Deleting /var/lib/jenkins/workspace/maven_demo_impl/target  [INFO]  [INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ maven_demo_impl ---  [INFO] Using 'UTF-8' encoding to copy filtered resources.  [INFO] Copying 1 resource  [INFO] Copying 0 resource  [INFO]  [INFO] --- maven-compiler-plugin:3.6.1:compile (default-compile) @ maven_demo_impl ---  [INFO] Changes detected - recompiling the module!  [INFO] Compiling 2 source files to /var/lib/jenkins/workspace/maven_demo_impl/target/classes  [INFO]  [INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ maven_demo_impl ---  [INFO] Using 'UTF-8' encoding to copy filtered resources.  [INFO] Copying 1 resource  [INFO] Copying 0 resource  [INFO]  [INFO] --- maven-compiler-plugin:3.6.1:compile (default-compile) @ maven_demo_impl ---  [INFO] Nothing to compile - all classes are up to date  [INFO]  [INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ maven_demo_impl ---  [INFO] Not copying test resources  [INFO]  [INFO] --- maven-compiler-plugin:3.6.1:testCompile (default-testCompile) @ maven_demo_impl ---  [INFO] Not compiling test sources  [INFO]  [INFO] --- maven-surefire-plugin:2.21.0:test (default-test) @ maven_demo_impl ---  [INFO] Tests are skipped.  [INFO]  [INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ maven_demo_impl ---  [INFO] Building jar: /var/lib/jenkins/workspace/maven_demo_impl/target/maven_demo_impl-1.0-SNAPSHOT.jar  [INFO]  [INFO] --- spring-boot-maven-plugin:2.0.5.RELEASE:repackage (default) @ maven_demo_impl ---  [INFO] ------------------------------------------------------------------------  [INFO] BUILD SUCCESS  [INFO] ------------------------------------------------------------------------  [INFO] Total time:  11.163 s  [INFO] Finished at: 2019-08-27T15:00:40+08:00  [INFO] ------------------------------------------------------------------------  SSH: Connecting from host [localhost.localdomain]  SSH: Connecting with configuration [192.168.20.143] ...  SSH: EXEC: STDOUT/STDERR from command [sh /projects/scripts/run.sh maven_demo_impl 10010] ...  starting service...  nohup: 把輸出追加到"nohup.out"  maven_demo_impl : 4406 SUCCESS  SSH: EXEC: completed after 20,262 ms  SSH: Disconnecting configuration [192.168.20.143] ...  SSH: Transferred 1 file(s)  Finished: SUCCESS  

可以看到ssh已經有jar 並運行了。

1

END