• 安装Jenkins


    安装Jenkins

    jenkins官网

    1、安装jdk

    1)yum安装

    yum search java|grep jdk # yum查看jdk版
    
    • 1
    yum install -y java-11-openjdk  #安装jre
    
    • 1
    yum install -y java-devel     #安装jdk
    
    • 1

    2)自定义安装

    ①下载java
    ②上传解压tar
    ③配置环境变量(此步骤省略即可)cd /etc/profile

    export JAVA_HOME=/data/jdk-11.0.16.1
    export PATH=$JAVA_HOME/bin:$PATH:$KE_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    • 1
    • 2
    • 3

    2、安装maven

    1)下载maven

    maven官网

    二进制压缩包下载:

    选择apache-maven-3.8.6-bin.tar.gz

    在这里插入图片描述

    2)压缩包上传至服务器

    3)解压缩

    tar -zxvf apache-maven-3.8.6-bin.tar.gz
    
    • 1

    4)修改maven配置文件镜像地址

    cd /root/apache-maven-3.8.6/conf
    vim settings.xml
    
    • 1
    • 2
     
        nexus-aliyun
        Nexus aliyun
        http://maven.aliyun.com/nexus/content/groups/public/
        central
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    5)配置环境变量

    export MAVEN_HOME=/root/apache-maven-3.8.6/
    export JAVA_HOME=/data/jdk-11.0.16.1
    export PATH=$JAVA_HOME/bin:$PATH:$KE_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=${PATH}:${MAVEN_HOME}/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5)查看版本

    [root@localhost ~]# mvn -v
    Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
    Maven home: /root/apache-maven-3.8.6
    Java version: 11.0.16.1, vendor: Oracle Corporation, runtime: /data/jdk-11.0.16.1
    Default locale: en_US, platform encoding: UTF-8
    OS name: "linux", version: "4.18.0-348.el8.x86_64", arch: "amd64", family: "unix"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3、安装Git

    配置git地址时,jenkins会自动使用git命令,所以需要安装git

    yum install git
    
    • 1

    4、安装Jenkins

    1)war包下载

    war包下载
    在这里插入图片描述

    2)安装运行Jenkins

    运行war包

    java -jar  jenkins.war
    
    • 1

    在运行的日志里面可以看见提示:运行过程中已经在/root/.jenkins路径下创建了Jenkins相关的文件,其中默认用户admin,密码在/root/.jenkins/secrets/initialAdminPassword文件里面,日志里面也打印了密码如下:

    *************************************************************
    *************************************************************
    *************************************************************
    
    Jenkins initial setup is required. An admin user has been created and a password generated.
    Please use the following password to proceed to installation:
    
    6394bc3ff49b476f8695b2d0233dd7ef
    
    This may also be found at: /root/.jenkins/secrets/initialAdminPassword
    
    *************************************************************
    *************************************************************
    *************************************************************
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3)访问Jenkins控制台

    http://192.168.109.141:8080
    输入默认密码:这个文件中/root/.jenkins/secrets/initialAdminPassword
    在这里插入图片描述

    4)推荐插件安装

    选择推荐插件安装——》等待插件安装完成——》创建管理员账号——进入Jenkins控制面板

    在这里插入图片描述

    5)创建管理员账号

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    6)安装maven插件

    需要使用maven插件构建项目,所以安装maven插件
    步骤如下图:
    在这里插入图片描述
    在这里插入图片描述
    点击安装后跳转至安装页面,滑动至最下面,查看安装进度,等待在线安装完成即可
    在这里插入图片描述

    7)配置当前服务器中安装的maven

    在这里插入图片描述
    在这里插入图片描述

    8)配置当前服务器中安装的git

    首先确定下在Jenkins服务器上已经安装了Git。
    可以通过

    git --version
    
    • 1

    来确定是否已经成功安装。
    然后再通过

    which git
    
    • 1

    来查看git的目录,并将其复制出来
    然后找到Jenkins下的系统管理-全局工具配置-Git
    将上面复制的git的路径放在Path to Git executable中
    保存

    在这里插入图片描述

    9)配置当前服务器中安装的java

    此处配置的java_home与服务器中/etc/profile中配置的一致
    在这里插入图片描述

    四、jenkins配置maven+git自动构建jar包

    1)新建任务

    2)源码管理

    ① 添加git源码地址

    在这里插入图片描述
    此步骤如果报错如下,则说明服务器没有安装git
    在这里插入图片描述
    如果报错如下,则说明该代码仓库为私有,需要修改为公有,或者在Credentials配置凭证
    在这里插入图片描述
    ② 配置分支
    在这里插入图片描述

    3)Build

    配置项目pom文件的路径,以gitlab上的路径为准

    在这里插入图片描述

    4)构建jar包

    在这里插入图片描述
    等待一段时间后前面时绿色的√代表成功,红色的×表示失败,具体情况查看控制台日志(可以点击名称进入,查看控制条打印的日志)
    在这里插入图片描述
    如果遇到如下问题有以下几点原因:
    1)则maven仓库镜像配置问题
    2)java版本问题
    3)jenkins没有配置maven或java
    在这里插入图片描述

    5)自启动jar查看结果

    根据上一步的日志可以查看到打包好的jar在/root/.jenkins/workspace/jenkins-test1/target/jenkins-test1-1.0-SNAPSHOT.jar,所以进入该路径启动jar包,然后访问该工程接口测试。

    [root@localhost jdk-11.0.16.1]# cd /root/.jenkins/workspace/jenkins-test1/target
    [root@localhost target]# ll
    total 4
    drwxr-xr-x. 3 root root   40 Nov 18 16:13 classes
    drwxr-xr-x. 3 root root   25 Nov 18 16:13 generated-sources
    -rw-r--r--. 1 root root 3008 Nov 18 16:13 jenkins-test1-1.0-SNAPSHOT.jar
    drwxr-xr-x. 2 root root   28 Nov 18 16:13 maven-archiver
    drwxr-xr-x. 3 root root   35 Nov 18 16:13 maven-status
    [root@localhost target]# java -jar jenkins-test1-1.0-SNAPSHOT.jar
    
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::                (v2.7.1)
    
    2022-11-18 16:34:09.355  INFO 40190 --- [           main] com.buba.Application                     : Starting Application using Java 11.0.16.1 on localhost.localdomain with PID 40190 (/root/.jenkins/workspace/jenkins-test1/target/jenkins-test1-1.0-SNAPSHOT.jar started by root in /root/.jenkins/workspace/jenkins-test1/target)
    2022-11-18 16:34:09.358  INFO 40190 --- [           main] com.buba.Application                     : No active profile set, falling back to 1 default profile: "default"
    2022-11-18 16:34:12.217  INFO 40190 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8001 (http)
    2022-11-18 16:34:12.258  INFO 40190 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2022-11-18 16:34:12.258  INFO 40190 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.64]
    2022-11-18 16:34:12.447  INFO 40190 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
    2022-11-18 16:34:12.447  INFO 40190 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2935 ms
    2022-11-18 16:34:14.383  INFO 40190 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8001 (http) with context path ''
    2022-11-18 16:34:14.413  INFO 40190 --- [           main] com.buba.Application                     : Started Application in 6.448 seconds (JVM running for 7.687)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    测试接口

    在这里插入图片描述
    如果遇到如下问题:则需要在工程的pom文件中指定maven插件,如下
    no main manifest attribute, in jenkins-test1-1.0-SNAPSHOT.jar

    解决方法:

     <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.buba</groupId>
        <artifactId>gitlab-test3</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>gitlab-test3</name>
        <packaging>jar</packaging>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
            <java.version>11</java.version>
            <maven.compiler.source>11</maven.compiler.source>
            <maven.compiler.target>11</maven.compiler.target>
        </properties>
    
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>2.7.1</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <version>2.7.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.7.1</version>
            </dependency>
        </dependencies>
    
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>2.7.1</version>
                    <configuration>
                        <!--   指定该Main Class为全局的唯一入口   -->
                        <mainClass>com.buba.GitlabTest3Application</mainClass>
                        <layout>ZIP</layout>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <!--  可以把依赖的包都打包到生成的Jar包中  -->
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    6)问题总结:

    ① springboot应用程序pom有父工程,但是没有搭建私服,找不到父工程

    报错:

    ERROR: Failed to parse POMs
    org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
    [FATAL] Non-resolvable parent POM for com.buba:gitlab-test3:0.0.1-SNAPSHOT: Could not find artifact org.springframework.boot:spring-boot-starter-parent:pom:2.7.2-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 5, column 13
    
    • 1
    • 2
    • 3

    原本pom如下

    <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.7.2-SNAPSHOT</version>
            <relativePath/> 
        </parent>
        <groupId>com.buba</groupId>
        <artifactId>gitlab-test3</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        
        <name>gitlab-test3</name>
        <properties>
            <java.version>11</java.version>
        </properties>
        .......................省略
    </project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    解决:将父工程去掉,再以来中添加版本

    <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.buba</groupId>
        <artifactId>gitlab-test3</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>gitlab-test3</name>
        <packaging>jar</packaging>
    
        <properties>
            <java.version>11</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>2.7.1</version>
            </dependency>
        </dependencies>
    </project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    ②maven报错:不再支持源选项 5。请使用 6 或更高版本

    在这里插入图片描述
    问题描述
    在构建某个maven项目的时候发生了异常,遇到以下错误,理论上是由于没有指定JAVA版本导致的。
    [ERROR] 不再支持源选项 5。请使用 6 或更高版本。
    [ERROR] 不再支持目标选项 1.5。请使用 1.6 或更高版本。
    解决方案
    pom.xml文件中增加maven编译的java.version jdk版本设置,以及maven.compiler.source 资源编译jdk版本设置和maven.compiler.target 资源构建jdk版本设置

    For JAVA6~8,一般都是1.6,1.7,1.8的写法。至于1.9用的人少,我也不知道写1.9还是9。

    
            UTF-8
            UTF-8
            1.8
            1.8
            1.8
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    For JAVA≥10,例如10以上,都是直接写10,11,12,13,14的。

    
            UTF-8
            UTF-8
            11
            11
            11
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    ③no main manifest attribute

     <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>2.7.1</version>
                    <configuration>
                        <!--   指定该Main Class为全局的唯一入口   -->
                        <mainClass>com.buba.GitlabTest3Application</mainClass>
                        <layout>ZIP</layout>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <!--  可以把依赖的包都打包到生成的Jar包中  -->
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    ④Cannot resolve plugin org.springframework.boot:spring-boot-maven-plugin

    <dependencies>
          <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.7.1</version>
          </dependency>
    </dependencies>
    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>2.7.1</version>
                    <configuration>
                        <!--   指定该Main Class为全局的唯一入口   -->
                        <mainClass>com.buba.GitlabTest3Application</mainClass>
                        <layout>ZIP</layout>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <!--  可以把依赖的包都打包到生成的Jar包中  -->
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
    </build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    ⑤Maven install报错To see the full stack trace of the errors, re-run Maven with the -e switch
    这个问题的原因尚未理解,但是碰巧我有上传了一部分代码,本地clean了一下。后面Jenkins构建就好了。
    maven clean 一下将一下文件上传就好了
    在这里插入图片描述

    五、Jenkins自动发布

    1、安装SSH插件

    在这里插入图片描述
    在这里插入图片描述
    等待全部安装完成,如下图所示:

    在这里插入图片描述

    2、配置服务器地址

    在这里插入图片描述
    到系统配置页面后一直往下滑找到SSH配置,点击新增
    在这里插入图片描述
    然后填写必填项
    Name:给目标服务器定义名字
    hostname:IP地址
    username:登陆服务器的用户名
    然后点击高级按钮
    在这里插入图片描述
    勾选使用密码,填写密码
    在这里插入图片描述
    然后测试是否能够连接成功,连接成功后点击保存,如下图:
    在这里插入图片描述

    3、Post Steps 构建后(自动发布并运行)

    ①点击项目进入

    在这里插入图片描述
    ②然后点击配置
    在这里插入图片描述
    ③点击发布步骤配置
    在这里插入图片描述
    ④选择SSH方式连接发送执行
    在这里插入图片描述

    ⑤填写部署步骤配置

    SSH Server Name:选择一个已经配置好的服务器
    Transfer Set Source files:传输文件(此处**可以模糊匹配任意目录)
    remote directory:目标文件夹
    exec command:执行的命令(
    nohup 在系统后台不挂断地运行命令,退出终端不会影响程序的运行
    &:让命令在后台执行,终端退出后命令仍旧执行。)
    在这里插入图片描述
    点击高级,选中Exec in pty:
    在这里插入图片描述
    命令优化:nohup java -jar /root/target/*.jar &>>log.log &

    在目标服务器中编写启动脚本文件start.sh:

    #最后一个执行的脚本放到的位置是/projects/scripts
    
    Project_name=$1
    Port_no=$2
    
    
    #echo $Project_name
    #echo $Port_no
    
    
    . /etc/profile
    
    
    # 进入到项目
    cd /root/gitlab-test3/target
    
    
    # 找到原进程,kill
    pid=$(ps -ef | grep java| grep $Project_name|awk -F '[ ]+' '{print $2}')
    kill -9 $pid
    
    
    
    #启动jar
    nohup java -jar /root/gitlab-test3/target/$Project_name-0.0.1-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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    4、Pre Steps 构建前(执行目标服务器脚本)

    kill掉原来的进程
    清理掉原来传输的文件

  • 相关阅读:
    常见的安全测试漏洞
    第一季:12Linux常用服务类相关命令【Java面试题】
    AD9680配置与数据还原说明
    java面试题
    二分图的一点点建模例题
    uniapp转抖音小程序踩坑记录
    【JavaEE&Spring】认识Spring
    认识JAVA中的异常
    Gradle 笔记
    GC日志、线程Dump日志、堆Dump可视化分析
  • 原文地址:https://blog.csdn.net/Dyoungwhite/article/details/128001654