《项目实战》 Jenkins 与 CICD、发布脚本

在这里插入图片描述


前言

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
帮助文档:https://www.jenkins.io/zh/doc/book/

1、CI/CD是什么?

1.1、CI

CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。借用网络图片对CI加以理解。
在这里插入图片描述

1.2、CD

CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。下图反应的是CI/CD 的大概工作模式。
在这里插入图片描述

2、jenkins的下载与安装

2.1、下载

https://github.com/jenkinsci/jenkins/tags
在这里插入图片描述
在这里插入图片描述

2.2、安装

运行命令:java -jar jenkins.war --httpPort=8888
在这里插入图片描述
打开浏览器进入链接
http://localhost:8888

3、创建Java Springboot项目

3.1、创建项目shell

勾选 :Create Git repository
在这里插入图片描述
在这里插入图片描述

3.2、配置Maven

寻找路径: File -> Settings -> Build,Execution,Deployment -> Build Tools -> Maven
在这里插入图片描述

3.3、查看项目shell结构

.mvn: 包含maven信息
src: 源代码
ShellApplication.java: Springboot启动类
resources: 资源目录,存放application.yaml / application.properties,静态资源等
pom.xml: maven配置文件
在这里插入图片描述

3.4、在启动类增加日志

package com.company.shell;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ShellApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication.run(ShellApplication.class, args);
        System.out.println("项目启动成功!!!");
    }

}

3.4.1、创建ShellController,方便浏览器验证服务

package com.company.shell.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;

/***
 * @title ShellController
 * @desctption Shell 控制器
 * @author Kelvin
 * @create 2023/6/13 18:34
 **/
@RestController
public class ShellController {
    
    

    @GetMapping("/index")
    public Map welcome() {
    
    
        Map map = new HashMap();
        map.put("code" , 200);
        map.put("message" , "欢迎");
        return map;
    }

}

3.5、本地打包,确保部署的项目是无错误的

在这里插入图片描述
打包成功,控制台会显示:[INFO] Finished,在项目路径下,会有target文件夹生成,并能看到项目名-版本号.jar文件
在这里插入图片描述

3.6、本地打包无误后,可提交到gitlab/gitee/github等仓库

在这里插入图片描述
提交代码并选择自己的仓库地址
在这里插入图片描述

3.7、去 git仓库查看提交的代码

在这里插入图片描述

4、编写发布脚本


#从git仓库来取代码并编译
cd /home/service/sourcecode
rm -rf ./*
echo '从远程仓库来取最新代码'
git clone -b dev-20230613 https://[email protected]/xxxx/shell.git
#切换到代码的所在目录
cd shell
#maven命令打包代码
mvn -U  package
#备份文件
if test -e /home/service/app/shell-0.0.1-SNAPSHOT.jar
then
mv -f /home/service/app/shell-0.0.1-SNAPSHOT.jar /home/service/backup/
fi
cp -f /home/service/sourcecode/shell/target/shell-0.0.1-SNAPSHOT.jar /home/service/app/
#如果java已经启动,则杀死
process=ps -ef | grep shell-0.0.1-SNAPSHOT.jar | grep -v grep | awk 'NR==1 {print $2}'
if test -n "$process"
then
echo "准备杀死进程:"$process""
kill -9 $process
echo "已经杀死进程:"$process""
fi
#启动jar包
echo '重新启动shell-0.0.1-SNAPSHOT.jar'
nohup java -jar /home/service/app/shell-0.0.1-SNAPSHOT.jar >>/dev/null 2>&1 &
echo 'shell-0.0.1-SNAPSHOT.jar自动完毕'

5、jenkins通过脚本运行项目

jenkins通过脚本运行项目,最后在浏览器可以访问到部署的服务,即算Jenkins CICD流程整合成功。
浏览器地址:http://192.168.0.100:9000/index

猜你喜欢

转载自blog.csdn.net/s445320/article/details/131189920