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配置gitlab 401 Jenkins配置repo_centos

登录成功后安装插件,创建用户也可直接用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配置gitlab 401 Jenkins配置repo_服务器_02

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

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

第二步:查看默认 Jdk 版本
[root@localhost ~]# 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 

[root@localhost ~]# alternatives --install /usr/bin/java java /usr/local/java/jdk1.8.0_251/bin/java 2 
  
 [root@localhost ~]# alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.8.0_251/bin/javac 2 
  
 [root@localhost ~]# alternatives --install /usr/bin/jar jar /usr/local/java/jdk1.8.0_251/bin/jar 2

第四步:选择自己的安装的 Jdk
[root@localhost ~]# 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配置gitlab 401 Jenkins配置repo_服务器_03

第六步:重启Jenkins
 systemctl start jenkins

 

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

   Configure System 设置    

    Publish over SSH  设置     

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


Jenkins配置gitlab 401 Jenkins配置repo_Jenkins配置gitlab 401_04

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配置gitlab 401 Jenkins配置repo_centos_05

2.构建触发器  

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

Jenkins配置gitlab 401 Jenkins配置repo_Jenkins配置gitlab 401_06

3.构建  

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

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

      配置Maven 版本  

       选择安装的maven名称      

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

Jenkins配置gitlab 401 Jenkins配置repo_服务器_07

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

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

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

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

Jenkins配置gitlab 401 Jenkins配置repo_ssh_08

     添加  Execute  shell 方式

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

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

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

Jenkins配置gitlab 401 Jenkins配置repo_服务器_09

          添加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配置gitlab 401 Jenkins配置repo_运维_10

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配置gitlab 401 Jenkins配置repo_ssh_11

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配置gitlab 401 Jenkins配置repo_运维_12

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配置gitlab 401 Jenkins配置repo_运维_13

Jenkins配置gitlab 401 Jenkins配置repo_ssh_14

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