引言

在之前的文章中,和大家一起学习了如何在本地安装和部署jenkins,这篇文章继续学习如何使用jenkins来构建项目。上期文章地址:

新建项目

1.首先我们新创建一个简单的springboot项目,作为我们使用jenkins的构建对象。使用IDEA新建一个project,选择Spring Initializr

jenkins功能框架图_jenkins功能框架图

2.springboot选项

jenkins功能框架图_java_02

3.设置端口
修改application.properties文件,增加端口配置(如果习惯使用yml文件也可以):
server.port=8085

4.修改启动类代码,增加一个hello的restful接口

package com.jolan.simpleproject;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class SimpleprojectApplication {

    public static void main(String[] args) {
        SpringApplication.run(SimpleprojectApplication.class, args);
    }

    @GetMapping("/hello")
    public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
        return String.format("Hello %s!", name);
    }
}

5.修改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.6.12</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.jolan</groupId>
    <artifactId>simpleproject</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>simpleproject</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

6.使用maven package进行打包

jenkins功能框架图_jenkins_03

6.运行
使用idea启动,或在终端使用java -jar启动
java -jar simpleproject-0.0.1-SNAPSHOT.jar

7.测试

http://localhost:8085/hello?name=jolan

jenkins功能框架图_spring boot_04


(tips:如何新建一个springboot项目参考资料:https://spring.io/quickstart)

好了,到此我们就完成了一个简单的项目了。最后我们把项目上传到github(略)。

使用jenkins

配置

jenkins在运行时,需要依赖一系列的环境配置,如jdk、maven等。首先我们登录jenkins首页:http://localhost:9010/jenkins/

jenkins功能框架图_jenkins_05


然后点击左侧菜单的Manage Jenkins。选择全局配置。

jenkins功能框架图_jenkins功能框架图_06


maven配置:

jenkins功能框架图_maven_07


jdk配置:

jenkins功能框架图_java_08


git配置:

jenkins功能框架图_java_09

创建pipeline

pipeline我理解就是流水线的意思,我们通过编辑流水线脚本,让jenkins帮助我们做规划好的工作。首先点击左上角的新建Item

jenkins功能框架图_jenkins_10


jenkins功能框架图_maven_11


然后直接点接流水线:

jenkins功能框架图_jenkins_12


jenkins功能框架图_jenkins_13


pipeline 脚本如下。其中"M3"是在maven的全局配置名称;

pipeline {
    agent any

    tools {
        // Install the Maven version configured as "M3" and add it to the path.
        maven "M3"
    }

    stages {
        stage('Build') {
            steps {
                // Get some code from a GitHub repository
                git 'https://github.com/jolan80l/simpleproject.git'

                // Run Maven on a Unix agent.
                sh "mvn -Dmaven.test.failure.ignore=true clean package"

                // To run Maven on a Windows agent, use
                // bat "mvn -Dmaven.test.failure.ignore=true clean package"
            }
        }
    }
}

然后回到主界面,点击构建按钮

jenkins功能框架图_maven_14


短暂的等待后,刷新页面可以看到构建结果。可以看到本次构建共花费了约18秒,构建结果成功!

jenkins功能框架图_maven_15


从上面的脚本中我们看到,在Build阶段我们做了两件事。第一从github拉取代码(这就是我们新建项目的github地址),第二是执行了maven的package命令。这些过程我们可以在构建的日志中找到。

jenkins功能框架图_jenkins功能框架图_16


jenkins功能框架图_java_17


我截取部分构建日志供大家参考:

......
Cloning repository https://github.com/jolan80l/simpleproject.git
...
[INFO] Building jar: /Users/xxx/.jenkins/workspace/simple-java-maven-app/target/simpleproject-0.0.1-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
...

最后我们在/Users/xxx/.jenkins/workspace/simple-java-maven-app/target/simpleproject-0.0.1-SNAPSHOT.jar这个路径下可以找到jenkins帮忙自动打包的jar包啦。

构建后启动

最后我们修改一下脚本,使jenkins构建完成后自动启动应用。修改后的流水线脚本如下(路径的一部分涉及隐私使用xxx代替,请读者使用实际路径替换)

pipeline {
    agent any

    tools {
        // Install the Maven version configured as "M3" and add it to the path.
        maven "M3"
    }

    stages {
        stage('Build') {
            steps {
                // Get some code from a GitHub repository
                git 'https://github.com/jolan80l/simpleproject.git'

                // Run Maven on a Unix agent.
                sh "mvn -Dmaven.test.failure.ignore=true clean package"

                // To run Maven on a Windows agent, use
                // bat "mvn -Dmaven.test.failure.ignore=true clean package"
            }
        }
        stage('Start') {
            steps {
                sh "cd /Users/xxx/.jenkins/workspace/simple-java-maven-app/target"
                sh '''JENKINS_NODE_COOKIE=dontKillMe
java -Dhudson.util.ProcessTree.disable=true -jar /Users/xxx/.jenkins/workspace/simple-java-maven-app/target/simpleproject-0.0.1-SNAPSHOT.jar  2>&1 &'''
            }
        }
    }
}

然后我们在浏览器访问http://localhost:8085/hello?name=jolan

jenkins功能框架图_jenkins功能框架图_18