jenkins教程之04_Ubuntu下Jenkins实现java项目自动化部署教程 - Go语言中文社区

jenkins教程之04_Ubuntu下Jenkins实现java项目自动化部署教程


04_Ubuntu下Jenkins实现java项目自动化部署教程

一. 创建Java项目

我们随便创建一个SpringBoot的web项目,进行jenkins的测试.

在本项目中配置了.gitignore忽略文件,把不必要的文件忽略掉,不用往git仓库中进行代码提交.

1. pom.xml文件内容

<parent>
     <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <encoding>UTF-8</encoding>
        <java.version>1.8</java.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <!--web启动器是与SpringMVC相关的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <target>${java.version}</target>
                    <source>${java.version}</source>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

2. Controller内容

package com.syc.jenkins.web;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/show")
    public String showInfo() {
        return "hello,this is jenkins demo";
    }

    @GetMapping("/hello")
    public String sayHello() {
        return "hello....";
    }

    @GetMapping("/new")
    public String newFeature() {
        return "new feature...";
    }

}

可以在本地运行启动一下该项目,简单进行测试,没问题就可以上传代码到git仓库中.

二. 提交代码到Gitlab中

1. 创建Gitlab项目

在gitlab中创建一个新项目,用作代码仓库.

然后把第一步中创建好的项目提交到Gitlab的仓库中.

具体过程略,提交代码的过程请参考本人的Git教程.

https://blog.csdn.net/syc000666/article/details/100921595

2. 配置jenkins与Gitlab的认证token

在"Jenkins"管理中进行"系统设置".

添加Jenkins配置.

选择Gitlab API token选项.

填写Gitlab中的Access Token内容.

可以去Gitlab中,选择自己的用户的头像,选择"Settings",然后选择"Access Tokens".

然后可以点击"Test Connection",如果出现Success则表示Jenkins与Gitlab连接成功.

三. jenkins中新建Item

1. 创建一个新任务

 

2. 配置项目

配置和项⽬相关的内容,如源码,编译⽅式等.

继续向下拉

选择选择 maven maven 版本和执⾏的命令.

保存一下.

3. 构建测试

查看控制台,第⼀次可能会有⼤量的下载依赖包的过程,直到最后构建成功.

进⼊Linux服务器中的/var/lib/jenkins/workspace/⽬录下,
可以看到以当前jenkins任务名字命名的⽬录,在⾥⾯就是我们的maven 项⽬项⽬.在target⽬录中可以找到我们编译后的jar包⽂件.

四. 部署发布项目到远程服务器,实现上线

1. 安装 Git Parameter 插件

在实际开发中,我们的CI(持续集成)⼀天内可能会有很多次,但是我们的CD(持续交付)在⼀段时间内可能只会有⼀次.
所以一般只有我们在发布版本的时候才会有CD,为了区分我们的版本,可以在git中使⽤ tag 来区分. 我
们每次发布之前先对代码添加 tag,这样我们就可以选择对应的 tag 来进⾏发布. jenkins可以通过读取我们的 gitlab 的 tag,进而让我们选择对应的tag,而要读取这个 tag 我们需
要⼀个插件.

2. 重新配置项⽬

添加参数化构建,和构建后发布到的远程服务器.

3. 配置构建后发布

添加⼀个构建步骤,选择shell.

参考脚本

echo $Tag
cd /var/lib/jenkins/workspace/myjinkins/
git checkout $Tag
git pull origin $Tag
/usr/local/apache-maven-3.6.3/bin/mvn clean package

因为使⽤了tag,所以需要重新切换tag,然后更新代码.

4. 添加构建后操作

配置发布参数

参考脚本

#!/bin/bash
cp /var/lib/jenkins/workspace/myjinkins/target/*.jar /usr/local/jenkins-target/
cd /usr/local/jenkins-target
nohup java -jar ./*.jar &
echo 返回值:  $?
sleep 1

最后保存即可.

5. 部署上线项⽬

5.1 在Gitlab上给我们的项目添加tag.

5.2 带参数构建项⽬.



选择对应的版本后进⾏构建,进⼊本次构建的控制台.

最终看到构建结果.

5.3 访问⽬标服务器

打开浏览器,访问自己的项目地址,10.60.14.63:8080

可以看到我们的项目接口内容成功展示出来.

5.4 修改代码,再次测试

修改我们的项目代码,然后提交到Gitlab. 但是注意,此时我们之前的1.0 tag 中并没有我们
最新的内容, 作为新版本发布,我们需要新建⼀个 tag,然后选择新 tag 发布,此处略过提交代码和新建 tag 的过程. 我们新建了⼀个2.0tag,然后重新构建,发现发现2.0 2.0已经⾃动出现了.

构建完成重新在浏览器中访问服务器.

5.5 项目降级

当我们最新发布的版本出现问题的时候,可以重新选择低版本的tag发布,可以快速降,此处就不演示了.




 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/syc000666/article/details/104020563
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢