目录
1.创建项目
#可以自己找项目进行改动,也可以自建简单项目测试
#这里需要先安装java,可以参考这位博主的文章来安装Java 安装和环境配置_java安装与配置-CSDN博客https://blog.csdn.net/weixin_47076538/article/details/128940479?ops_request_misc=%7B%22request_id%22%3A%22171518493116800222851971%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=171518493116800222851971&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-5-128940479-null-null.142%5Ev100%5Econtrol&utm_term=java%E5%AE%89%E8%A3%85%E5%92%8C%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83&spm=1018.2226.3001.4187 #我们在IntelliJ IDEA 2024.1.1构建一个最简单的spring boot项目进行CI测试
#新建——spring boot —— maven ——web—— spring web
package com.yyw.test.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/test")
public String test() {
return "hello";
}
}
#调试之前记得把maven的路径设置一下自带的maven路径
#写好后运行一下,检查没问题。
2.Gitlab仓库配置
#创建新project
#在IDEA自报家门
#之后就可以按照下面的方式把代码上传到git
#我这里使用IDEA的方式(创建git仓库)
#对整个项目进行commit
#获取gitlab仓库地址
#推送
#推送代码成功(开发端——gitlab实现完成)
3.Jenkins拉取代码
#创建任务(自由风格),绑定gitlab仓库(因为是公共仓库,push才需要用户名密码,而pull不需要)
#任务指定了源代码的位置,只要进行构建,就会从git仓库拉取到jenkins的本地。
#确认源码放在本地
[root@k8smaster jenkins_docker]# docker exec -it jenkins bash
jenkins@abbed0c24148:~/workspace$ pwd
/var/jenkins_home/workspace
jenkins@abbed0c24148:~/workspace$ ls mytest/
web web3.iml
jenkins@abbed0c24148:~/workspace$
4.Jenkins拉取代码后构建
#Jenkins任务——配置——Build Steps
#jenkins调用maven进行构建操作
#clean package -DskipTests
#失败就查看日志排查原因(linux-jdk版本过低会导致构建失败,这里我是从前期的8改为了22)
#jenkins拉取的代码会放在workspace里面,打包好的会放在workspace/target里面
#检查是否构建成功,出现target
jenkins@6e97332367d1:~$ pwd
/var/jenkins_home
jenkins@6e97332367d1:~$ ls workspace/test1/
mvnw mvnw.cmd pom.xml src target
5.Jenkins推送jar包到目标服务器并运行
#构建后操作,指定jenkins推送包并发送指令使用docker运行
#Send build artifacts over SSH
#接下来构建,目的是要目标服务器能接收到打包好的jar包
#到node1发现包已经传过来了
[root@k8snode1 test]# pwd
/usr/local/test
[root@k8snode1 test]# ls
target
[root@k8snode1 test]# ls target/
test1-0.0.1-SNAPSHOT.jar
#推送测试ok,接下来要让目标服务器运行了
#想要以docker方式运行的话,首先需要把包做成一个自定义的镜像
#可以在dockerhub上找基础镜像
#最后打包好的名字为mytest1.jar
#编写Dockerfile
FROM openjdk:22-jdk
COPY mytest1.jar /usr/local/
WORKDIR /usr/local
CMD java -jar mytest1.jar
#有了自定义镜像,还需要管理镜像。(docker-compose)
version: '3.1'
services:
mytest1:
build:
context: ./
dockerfile: Dockerfile
image: mytest1:v1.0.0
container_name: mytest1
ports:
- 8081:8080
#写好后全部推送到git仓库
#jenkins不仅仅要传jar包,还需要把dockerfile和docker-compose.yml文件一并传过去
#因为上面设置了ssh server的工作目录是/usr/local/test,所以直接进入文件夹执行命令
cd /usr/local/test/docker
mv ../target/*.jar ./
docker compose down
docker compose up -d --build
docker image prune -f
#构建好以后可以在目标服务器看到运行中的pod
[root@k8snode1 docker]# docker ps -a | grep my
662f093eaa6c mytest1:v1.0.0 "/bin/sh -c 'java -j…" 5 minutes ago Up 5 minutes 0.0.0.0:8081->8080/tcp mytest1
#访问 http://目标服务器ip:8081/test1
#往后代码的更新可以由IDEA处上传到gitlab,再由Jenkins拉取代码后构建,发布。