记录一下Docker+Jenkins自动化部署Gitee上SpringBoot项目遇到的坑

项目场景:

阿里云服务器CentOS7.9   2G内存

docker版本: Community 23.0.2

docker Jenkins镜像:jenkinsci/blueocean   latest  (2023.3.31)

Maven:3.6.3

Git version: 1.8.3.1

SpringBoot: 2.3.12.RELEASE

JDK:1.8

建议版本与上述保持一致,尤其是maven和jenkins


问题描述

从零开始搭建Jenkins自动化部署踩过的坑


1.安装环境

相信接触到Jenkins的人已经不是小白了,依照上面列出的版本逐一安装好所需软件即可。

安装无非就是去网上找tar.gz,然后rz上传,tar -zxvf解压即可。

docker run的时候建议使用以下命令:

docker run --name jenkins -u root --rm -d -p 8080:8080 -p 8079:8079 -p 50000:50000 -v /lbsoftware/jenkins_home:/var/jenkins_home -v /lbsoftware/jenkins_home/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3 -v /lbsoftware/jenkins_home/jdk1.8.0_131:/usr/local/jdk1.8.0_131 -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean

这句是本人执行的命令,不同环境的话要酌情修改

        重点:-p 指的是端口映射,第一个8080指将jenkins的端口映射出来(通过ip:8080访问Jenkins的web界面);第二个8079映射的是我springboot项目在yml里指定的项目运行端口(这个不写的话项目在docker中启动外界是访问不到的)

                 -v 指的是文件挂载,这个一定要写,格式是 “-v 本机中目录:docker中目录” 要将maven和jdk挂载进去,不然Jenkins创建工程会有问题;

安装maven后要在Maven的setting里要找到标签对,填入下面的内容,在mirrors标签对里有且只有下面这些内容

        
         alimaven
         aliyun maven
         http://maven.aliyun.com/nexus/content/groups/public/
         central
        

springboot测试项目:https://gitee.com/trumpetlb/jenkinsDemo.git

2.坑

1.运行内存要够

        刚开始由于服务器上跑着很多东西,free -h查看剩余内存只有100MB左右,docker run每次都是运行一会就自动关了 "docker ps -a显示Exited(137)

2.jenkins镜像

        网上很多文章都写了要改jenkins的镜像到清华镜像站,实测其实不需要改(网络环境黑龙江移动 2023.3.31日),假如改为清华镜像会导致很多Jenkins插件下载失败,用原本镜像就好;实在不行可以尝试科学上网。

记录一下Docker+Jenkins自动化部署Gitee上SpringBoot项目遇到的坑_第1张图片

如果上图这个地方会点开报很多错 ,一般来说点击右边的纠正就行,他会自己下载,下载完后自己手动重启docker “命令: docker restart [镜像id] ” 就行,网页里那个自动重启不怎么管用;

还是不行的话可能是版本问题Jenkins2.387.1该版本亲测可用[系统管理最右下角可以看版本]),看一下这个铃铛一样的按钮里点开最下面是否有更新的字样,有的话点右边那个自动更新,然后重启镜像就行

3.全局工具配置

记录一下Docker+Jenkins自动化部署Gitee上SpringBoot项目遇到的坑_第2张图片

在工具配置里,将刚才docker run时-v挂载的mavenjdk路径写进去就行(冒号后面的docker路径)记录一下Docker+Jenkins自动化部署Gitee上SpringBoot项目遇到的坑_第3张图片

类似图中这样 

然后到系统管理里配置gitee就行,注意:这个api令牌只能在这用,在创建项目时不太行(创建项目时本人使用的是Username with password记录一下Docker+Jenkins自动化部署Gitee上SpringBoot项目遇到的坑_第4张图片

 然后跟着网上大多数文章的步骤,创建一个Maven项目

记录一下Docker+Jenkins自动化部署Gitee上SpringBoot项目遇到的坑_第5张图片

源码管理选Git,然后填写gitee项目地址(https那个)和用户名密码

在构建触发器里选webhook,在gitee的项目中的项目管理里选webHook,填入Jenkins中提示要填的url和密码 

记录一下Docker+Jenkins自动化部署Gitee上SpringBoot项目遇到的坑_第6张图片

Build里的Goals and options填clean install -Dmaven.test.skip=true

记录一下Docker+Jenkins自动化部署Gitee上SpringBoot项目遇到的坑_第7张图片

Post Steps里 下面的add post build step 里选 执行shell (关键)

记录一下Docker+Jenkins自动化部署Gitee上SpringBoot项目遇到的坑_第8张图片

shell里内容如下,作用是杀掉之前的jar包进程,并运行新的项目

project后面改为您自己的jar包名称

dir后面写您自己的jar包路径

最后一行的nohup里改为自己对应的目录+jar包名称

#!/bin/bash
source /etc/profile
project=jenkinsDemo-0.0.1-SNAPSHOT.jar
echo "文件目录"
dir=/var/jenkins_home/workspace/hello/target/
pid=`ps -ef | grep $dir$project | grep -v grep | awk '{print $1}'`
if [ -n "$pid" ]
then
   kill -9 $pid
fi
echo "运行构建的jar包"
nohup java -jar /var/jenkins_home/workspace/hello/target/jenkinsDemo-0.0.1-SNAPSHOT.jar > log 2>&1 &

最后点立即构建就行了,不出意外的话项目已经跑起来了,访问即可 

如果还是不行可以留言,看到会回复的。

你可能感兴趣的:(jenkins,自动化,spring,boot,docker,gitee)