Jenkins安装配置和构建使用

                                     Jenkins安装配置和构建使用

 

东西有点多,有点杂。慢慢看,不喜勿喷。谢谢!!!!!

 

一.#RPM 安装jenkins (注意事项)

#已先安装好jdk和maven

下载rpm包   历史所有版本下载地址     http://mirrors.jenkins.io/

rpm安装命令    rpm -ivh Jenkins的rpm包名

自动安装完成之后:

/usr/lib/jenkins/jenkins.war    WAR包路径 

/etc/sysconfig/jenkins      配置文件,可修改端口

/var/lib/jenkins/   默认的JENKINS_HOME目录

/var/log/jenkins/jenkins.log   Jenkins日志文件

#启动jenkins

systemctl start jenkins

#maven包配置完之后,修改settings.xml 添加架包配置

<localRepository>/usr/local/maven/repo</localRepository>     //自定义架包编译位置

//添加阿里云镜像

<!-- 阿里云仓库 -->

<mirror>

    <id>alimaven</id>

   <mirrorOf>central</mirrorOf>

   <name>aliyun maven</name>

   <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>

</mirror>

#maven仓库repo文件夹授权为 jenkins   (很重要)

chown -R jenkins:jenkins repo/

#jenkins配置maven和JDK

#编辑文件命令

vi /etc/profile

#添加配置

#jdk

export JAVA_HOME=/usr/local/application/jdk1.8.0_251 //jdk 目录

export PATH=$JAVA_HOME/bin:$PATH

#maven

export MAVEN_HOME=/usr/local/maven //maven 目录

export PATH=$PATH:$MAVEN_HOME/bin

#访问Jenkins 服务地址   通过  Ip+port(8080) 即可正常访问Jenkins

   Jenkins 默认端口为 8080
    修改默认端口号文件
    /etc/sysconfig/jenkins
  文件中,此处重新配置即可
  ## Type:        integer(0:65535)
  ## Default:     8080
  ## ServiceRestart: jenkins
  #
  # Port Jenkins is listening on.
  # Set to -1 to disable
  #
  JENKINS_PORT="想设置的端口号"

 

二.访问成功设置 Jenkins  

第一次进入需要密码:图中说明很清楚,在目录下找到对应的初始密码填充即可

Jenkins安装配置和构建使用

登录成功后安装插件,创建用户也可直接用admin登录。

插件的选择  (SVN  必须的)

Subversion Plug-in Svn 代码服务插件(Svn 服务器,需要配置钩子程序,才可以进行代码拉取)

Publish Over SSH 这个插件即可解决我们远程连接服务器的配置插件。

插件安装失败,可通过安装新版本解决。

安装时,会发现第一个版本未删除干净,造成安装报错问题,即便安装成功,也会因为 Jdk 版本问题,导致安装后无法使用。

问题的症结:系统默认Jdk版本为 1.7,而当前最新版本的 Jenkins 2.222 所需 Jdk 需要 1.8+

如何查看jenkins中的系统属性(如果你已经更新并不能启动的时候,可以先装回旧版本,或者通过其他渠道查看)

下图为最新版Jenkins 以及我调整好的默认jdk版本配置(!!!!!认Jdk 版本 不等于 你自行安装Jdk的版本)

Jenkins安装配置和构建使用

解决方法:升级 Jenkins 到最新版本

第一步:安装回旧版 Jenkins,并启动服务
进入系统后,系统会提示你进行版本更新,并提供下载连接,下载后是 jenkins.war 包
使用 jenkins.war 包,直接替换 /usr/lib/jenkins/jenkins.war 这个包(替换前先备份)

第二步:查看默认 Jdk 版本
[[email protected] ~]# alternatives --config java
 
共有 1 个提供“java”的程序。
 
  选项    命令
-----------------------------------------------
+  1    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64/jre/bin/java

第三步:添加自己的 Jdk 
[[email protected] ~]# alternatives --install /usr/bin/java java /usr/local/java/jdk1.8.0_251/bin/java 2 
 
[[email protected] ~]# alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.8.0_251/bin/javac 2 
 
[[email protected] ~]# alternatives --install /usr/bin/jar jar /usr/local/java/jdk1.8.0_251/bin/jar 2

第四步:选择自己的安装的 Jdk
[[email protected] ~]# alternatives --config java
 
共有 2 个提供“java”的程序。
 
  选项    命令
-----------------------------------------------
 + 1     /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64/jre/bin/java
*  2     /usr/local/application/jdk1.8.0_251/bin/java
 
按 Enter 保留当前选项[+],或者键入选项编号:2

第五步:Jenkis 中配置自己安装的 Jdk
 
vi /etc/init.d/jenkins

Jenkins安装配置和构建使用

第六步:重启Jenkins
 systemctl start jenkins

 

安装插件成功进行如下配置:

   Configure System 设置    

     Publish over SSH  设置     

       新增  SSH Servers  有几个服务器就配置几个     

      Jenkins安装配置和构建使用

Global Tool Configuration 设置          

       配置             maven        settings提供     maven的settings路径  /usr/local/maven363/conf/settings.xml          

                             JDK          JAVA_HOME        jdk存放路径   /usr/local/application/jdk1.8.0_251      

                           Maven 安装   MAVEN_HOME       maven存放路径   /usr/local/maven

 

三.构建项目步骤

    1. 源码管理  选择对应仓库位置   SVN为例    

     选择   Subversion   如下完成配置

Jenkins安装配置和构建使用

2.构建触发器  

  选择   Poll SCM   里设置每5分钟执行一次    H/5 * * * *  

Jenkins安装配置和构建使用

3.构建  

  1.服务和Jenkins在同服务器上时

      选择maven构建方式  Invoke top-level Maven targets    

      配置Maven 版本  

       选择安装的maven名称      

       目标设置   clean install package -am --also-make -Dmaven.test.skip=true    #代表maven方式操作  

Jenkins安装配置和构建使用

2.服务和Jenkins不在同服务器上时

      选择maven构建方式  Invoke top-level Maven targets    

         配置Maven 版本   选择安装的maven名称      

         目标设置   clean install package -am --also-make -Dmaven.test.skip=true    #代表maven方式操作  

Jenkins安装配置和构建使用

     添加  Execute  shell 方式

     选择maven构建方式  Invoke top-level Maven targets    

         配置Maven 版本   选择安装的maven名称      

         目标设置   clean   #代表maven方式操作

Jenkins安装配置和构建使用

          添加shell命令  

                #!/bin/bash  

                 rm -rf business  

                 mkdir business  

                cp ./wckj-iot/target/wckj-iot-1.0-SNAPSHOT.jar ./business  

                cp ./wckj-iot-event/target/wckj-iot-event-1.0-SNAPSHOT.jar ./business  

                cp ./wckj-system/target/wckj-system-1.0-SNAPSHOT.jar ./business  

                cp ./wckj-iot-deviceinfo/target/wckj-iot-deviceinfo-1.0-SNAPSHOT.jar ./business

 

4.构建后操作  

     1.服务和Jenkins在同服务器上时    

         选择ssh方式  Send build artifacts over SSH      

         Exec command( 自动编译文件存放地址)    /usr/local/application/sh/business/test-business_service_all.sh  

Jenkins安装配置和构建使用

         test-business_service_all.sh 文件内容    

              #!/bin/bash      

             echo '开始执行脚本'    

             kill -9 `ps -ef | grep 'wckj-system-1.0-SNAPSHOT.jar' | grep -v grep |awk '{print $2}'`        //查找端口服务 ---杀掉进程         kill -9 `ps -ef | grep 'wckj-iot-1.0-SNAPSHOT.jar' | grep -v grep |awk '{print $2}'`      

             kill -9 `ps -ef | grep 'wckj-iot-event-1.0-SNAPSHOT.jar' | grep -v grep |awk '{print $2}'`      

             kill -9 `ps -ef | grep 'wckj-iot-deviceinfo-1.0-SNAPSHOT.jar' | grep -v grep |awk '{print $2}'`      

             sleep 3s   // 停止3秒

             nohup java -jar /usr/local/application/business/wckj-system-1.0-SNAPSHOT.jar --server.port=8081 --spring.profiles.active=dev >/usr/local/application/log/wckj-system-log 2>&1&      

           nohup java -jar /usr/local/application/business/wckj-iot-1.0-SNAPSHOT.jar --server.port=8082 --spring.profiles.active=dev >/usr/local/application/log/wckj-iot-log 2>&1&      

           nohup java -jar /usr/local/application/business/wckj-iot-event-1.0-SNAPSHOT.jar --server.port=8083 --spring.profiles.active=dev >/usr/local/application/log/wckj-iot-event-log 2>&1&      

           nohup java -jar /usr/local/application/business/wckj-iot-deviceinfo-1.0-SNAPSHOT.jar --server.port=8084 --spring.profiles.active=dev >/usr/local/application/log/wckj-iot-deviceinfo-log 2>&1&      

          echo '执行完了启动'

文件说明:

             启动服务                                                                                                                                            指定端口    

            nohup java -jar /usr/local/application/business/wckj-system-1.0-SNAPSHOT.jar --server.port=8081 --

        指定使用服务配置文件                                      指定log日志文件路径  

spring.profiles.active=dev >/usr/local/application/log/wckj-system-log 2>&1&    

       

前端服务包发布配置

Jenkins安装配置和构建使用

test-wckj-iot-large-screen.sh  文件内容

     #!/bin/bash echo '开始执行脚本'

     netstat -tunlp|grep 9002|awk '{print $7}'|awk -F '/' '{print $1}'|xargs kill -9

     cd /var/lib/jenkins/workspace/test-wckj-iot_large_screen/      

     cnpm install

     cnpm install --save mockjs

     #npm run dev &

     nohup cnpm start -- --port 9002 >/usr/local/application/log/test-wckj-iot_large_screen 2>&1 & exit

     echo '执行完了构建'

文件说明:

 netstat -tunlp|grep 9002|awk '{print $7}'|awk -F '/' '{print $1}'|xargs kill -9 :用 ps 查看进程 PID ,用 kill 命令终止进程。   

awk '{print $7}' : 项目id(我在当前项目应用中的版本即Jenkins项目列表的钟表类型的图标对应的列号为7)。

awk -F '/' '{print $1}': 代表以 '/' 分割的第一个参数。

xargs: 将前面获取到的进程号通过空格分割,传递给kill -9,杀死所有进程。

2.服务和Jenkins不在同服务器上时

   选择ssh方式  Send build artifacts over SSH      

   Exec command( 自动编译文件存放地址)   /usr/local/application/sh/test-business_service_all_run.sh

Jenkins安装配置和构建使用

    test-business_service_all_run.sh文件内容

      #!/bin/bash

      echo '开始执行脚本'

      source /etc/profile

      kill -9 `ps -ef | grep 'wckj-system-1.0-SNAPSHOT.jar' | grep -v grep |awk '{print $2}'`

      kill -9 `ps -ef | grep 'wckj-iot-1.0-SNAPSHOT.jar' | grep -v grep |awk '{print $2}'`

      kill -9 `ps -ef | grep 'wckj-iot-event-1.0-SNAPSHOT.jar' | grep -v grep |awk '{print $2}'`

      kill -9 `ps -ef | grep 'wckj-iot-deviceinfo-1.0-SNAPSHOT.jar' | grep -v grep |awk '{print $2}'`

     sleep 3s

     nohup java -jar /usr/local/application/business/wckj-system-1.0-SNAPSHOT.jar --server.port=8081 --spring.profiles.active=gstest >/usr/local/application/log/wckj-system-log 2>&1&

     nohup java -jar /usr/local/application/business/wckj-iot-1.0-SNAPSHOT.jar --server.port=8082 --spring.profiles.active=gstest >/usr/local/application/log/wckj-iot-log 2>&1&

     nohup java -jar /usr/local/application/business/wckj-iot-event-1.0-SNAPSHOT.jar --server.port=8083 --spring.profiles.active=gstest >/usr/local/application/log/wckj-iot-event-log 2>&1&

     nohup java -jar /usr/local/application/business/wckj-iot-deviceinfo-1.0-SNAPSHOT.jar --server.port=8084 --spring.profiles.active=gstest >/usr/local/application/log/wckj-iot-deviceinfo-log 2>&1&

    echo '执行完了启动'

 

5.配配置结束后,再看看是否可以运行

Jenkins安装配置和构建使用

Jenkins安装配置和构建使用

待打包及发布过程在代码中的时候,控制台输出: Finished: SUCCESS ,发布成功。