当前位置:   article > 正文

SpringBoot+Jenkins+Github+Docker+Maven持续集成CI与持续部署CD全自动化部署_github+maven搭建cicd

github+maven搭建cicd

1 准备各种环境

1.1 安装jenkins

我们采用tomcat运行war包的这种方式,先来到官网下载war包:https://www.jenkins.io/download/

然后把war包上传到tomcat的webapps里,自动就解压运行了,访问页面,然后查看并输入密码:

cat /root/.jenkins/secrets/initialAdminPassword

然后点击推荐安装,进入安装插件的页面:

下载完成后注册个用户即可。

1.2 安装git和maven

yum -y install git

yum -y install maven

都学到jenkins了,java环境相信应该都是有的,这里不在阐述。

1.3 创建SpringBoot项目

随便写一个接口就行,然后进行代码推送和仓库创建。

1.4 配置密钥和webhook

为了能访问仓库,得配置密钥,也可以用用户名密码(但是我添加后下拉框还是没有。。。只能用密钥了),把密钥复制出去保存好!!!

为了让项目每次push时触发自动部署,需要来到这里配置:

1.5 来到jenkins配置访问密钥

这页内容较多,github在中间靠下点位置,输入刚才的密钥添加

然后测试一下连接是否成功

 

2 开始进入主题

2.1 创建任务

名称随意,选择Freestyle project。

配置源码管理,选择Git

配置触发器:

配置执行脚本:

clean package -DskipTests

  1. BUILD_ID=DONTKILLME
  2. #!/bin/bash
  3. # find jar
  4. echo `pwd`
  5. cd ./target
  6. FILENAME=$(find -name springboot_jenkins**.jar)
  7. echo $FILENAME
  8. JARNAME=${FILENAME##*/}
  9. # stop previous service
  10. PID=$(ps -ef | grep $JARNAME | grep -v grep | awk '{ print $2 }')
  11. if [ -z "$PID" ]
  12. then
  13. echo $JARNAME is already stopped
  14. else
  15. echo kill $PID
  16. kill -9 $PID
  17. fi
  18. # cp jar to /root and start service
  19. cd /root
  20. cp /root/.jenkins/workspace/springboot_jenkins/target/$JARNAME .
  21. nohup java -jar $JARNAME > springboot_jenkins.log &
  22. # make sure the service had started
  23. ps -ef | grep springboot_jenkins

保存后,点击立即构建(maven建议换成阿里云镜像,settings.xml在这里:/usr/share/maven/conf):

然后就打包成功了,但是还是访问不了,因为8080端口被tomcat占用了,项目并没有启动成功,现在去改改端口,顺便也能测试下push后的自动部署是否生效:

经过测试,push第一次没效果:

后来也没咋搞,最后次终于行了:

试了试效果,还是很快的,一分钟就完事了:

到这里终于结束了,鼓捣了几小时,可见jenkins的强大之处!

 

3 使用docker方式启动

创建三个文件:

dockerfile用于创建镜像:

  1. #基于jdk8镜像进行构建,创建的镜像已经配置好java环境
  2. FROM openjdk:8-jdk-alpine
  3. #配置个变量记录jar的名称,方便修改
  4. ARG JAR_FILE=springboot_jenkins-0.0.1-SNAPSHOT.jar
  5. #在镜像中创建一个工作目录
  6. run mkdir /springboot_worker
  7. #将jar文件复制到工作目录中
  8. add /target/${JAR_FILE} /springboot_worker
  9. #暴露镜像的端口8989,其他端口不开放
  10. expose 8989
  11. #启动项目: java -jar /springboot_worker/springboot_jenkins-0.0.1-SNAPSHOT.jar
  12. CMD ["java","-jar","/springboot_worker/springboot_jenkins-0.0.1-SNAPSHOT.jar"]

加入两个脚本,build.sh和run.sh,其实写一个也行,或者直接在构建那边的执行shell里写都行。

build.sh:

  1. # 打包项目这个在构建配置那边配置了调用顶层Maven目标就不用再写了,不然就打包两次了(虽然不会错)
  2. # mvn package -DskipTests
  3. # 先删除上次创建的
  4. docker rmi -f baikunlong.top/springboot_jenkins:1.0
  5. # 创建镜像,最后个.是指使用当前目录下文件(dockerfile)
  6. docker build -t baikunlong.top/springboot_jenkins:1.0 .
  7. # 查看当前有哪些镜像
  8. docker images

run.sh

  1. # 停止容器
  2. docker stop springboot_jenkins_8989
  3. # 删除容器
  4. docker rm -f springboot_jenkins_8989
  5. # 创建容器
  6. docker run -d --name springboot_jenkins_8989 -p 8989:8989 baikunlong.top/springboot_jenkins:1.0
  7. # 查看docker进程
  8. docker ps -a

如果写成脚本文件,需要在这里加入修改权限和执行代码,不然直接把上面的代码复制到文本框里也行:

然后去推送代码,看看构建信息:

因为上边第二节使用了非docker方式启动过这个项目,端口被占用了,先去杀掉:

然后再随便改改代码,推送试试,应该就正常启动了:

看看文件到底放在哪里去了:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/130708
推荐阅读
相关标签
  

闽ICP备14008679号