Jenkins + Gitlab+ Docker + SpringBoot 构建流水线

1 环境

192.168.38.80 docker jenkins gitlab

在这里插入图片描述

2 Spring Boot

在这里插入图片描述

2.1 HelloController

@RestController
public class HelloController {


    @GetMapping("/hello")
    public String hello() {

        return "Hello World";
    }
}

2.2 初始化Jenkinsfile

pipeline {

   // 集群环境下任何一个代理可用就可以执行构建
   agent any

   // 步骤
   stages {

		stage('编译') {
			steps {
				echo "编译"
			}
		}

		stage('打包') {
			steps {
				echo "打包"
			}
		}


		stage('运行') {
			steps {
				echo "运行"
			}
		}
   }
}

2.3 项目上传到gitlab

在这里插入图片描述

3 Jenkins 创建项目

3.1 创建流水线

在这里插入图片描述

3.2 创建凭证

在这里插入图片描述

3.3 测试

打开 Blue Ocean:
在这里插入图片描述
点击运行:

在这里插入图片描述

4 触发远程构建

4.1 Jenkins 创建用户

在这里插入图片描述
在这里插入图片描述

4.2 创建用户token

用rosh用户登录:
在这里插入图片描述
在这里插入图片描述

#记录token,token只生成一次
1166227febd5d7b2bd43ac75cfc7247d0b

4.3 创建流水线令牌

在这里插入图片描述

4.4 创建Webhooks

url组成:http://jenkins账号:token@JENKINS_URL/job/springboot-devops/build?token=TOKEN_NAME

#例子
http://rosh:1166227febd5d7b2bd43ac75cfc7247d0b@192.168.38.80:8080/job/springboot-devops/build?token=rosh_springboot_devops

在这里插入图片描述

在这里插入图片描述

4.5 测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5 代码编译

5.1 jenkins 安装插件

在这里插入图片描述
在这里插入图片描述

5.2 创建maven配置文件

进入jenkins挂在卷:

在这里插入图片描述

#创建配置文件
cd /var/lib/docker/volumes/jenkins-data/_data
mkdir -p appconfig/maven
cd appconfig/maven/
vim settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
 
 
  <localRepository>/root/.m2</localRepository>
 
  <pluginGroups>
    
  </pluginGroups>

  
  <proxies>
    
  </proxies>

 
 
  <mirrors>
		
	 <mirror>
        <id>alimaven</id>
        <mirrorOf>central</mirrorOf>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
    </mirror>
		
  </mirrors>

  
  <profiles>
    
  </profiles>

  
</settings>

5.3 修改Jenkinsfile

默认工作目录打包

 pipeline {

   // 集群环境下任何一个代理可用就可以执行构建
   agent any


   environment {

     WORKSPACE="${WORKSPACE}"

   }


   // 步骤
   stages {

		stage('打包') {
		    agent {
               docker {
                    image 'maven:3-alpine'
                    // 把maven /root/.m2 文件 挂载到m2_jar数据卷
                    args '-v m2_jar:/root/.m2'
                }
            }

			steps {
			    sh "echo 默认工作目录:${WORKSPACE}"
				// jenkins在解析流水线期间,可以任意访问jenkins家目录的位置和相关环境信息
				sh 'cd ${WORKSPACE} && mvn clean package -s "/var/jenkins_home/appconfig/maven/settings.xml" -Dmaven.test.skip=true '
			}
		}

		stage('生成镜像') {
			steps {
				echo "生成镜像"
			}
		}
        

		stage('运行') {
			steps {
				echo "运行"
			}
		}
   }
}

5.4 提交

第一次很慢,后续会很快。

在这里插入图片描述

6 构建镜像

6.1Ddockerfile

FROM openjdk:8-jre-alpine
#同步时间
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
#复制包
ADD target/*.jar  /spring-demo.jar
#同步jar包时间
RUN touch /spring-demo.jar


EXPOSE 8888

ENV JAVA_OPTS="-Xmx512m -Xms512m"
#运行命令
ENTRYPOINT ["/bin/sh", "-c","java -jar $JAVA_OPTS  /spring-demo.jar"]

6.2 Jenkinsfile

pipeline {

   // 集群环境下任何一个代理可用就可以执行构建
   agent any


   environment {

     WORKSPACE="${WORKSPACE}"

   }


   // 步骤
   stages {

		stage('打包') {
		    agent {
               docker {
                    image 'maven:3-alpine'
                    // 把maven /root/.m2 文件 挂载到m2_jar数据卷
                    args '-v m2_jar:/root/.m2'
                }
            }

			steps {
			    sh "echo 默认工作目录:${WORKSPACE}"
				// jenkins在解析流水线期间,可以任意访问jenkins家目录的位置和相关环境信息
				sh 'cd ${WORKSPACE} && mvn clean package -s "/var/jenkins_home/appconfig/maven/settings.xml" -Dmaven.test.skip=true '
			}
		}

		stage('生成镜像') {
			steps {
                sh 'pwd && ls -alh'
                sh 'docker rmi -f springboot-demo:latest'
                sh 'docker build  -t springboot-demo .'
			}
		}
        

		stage('运行') {
			steps {
				echo "运行容器"
			}
		}
   }
}

6.3 查看

在这里插入图片描述

7 部署

Jenkinsfile

pipeline {

   // 集群环境下任何一个代理可用就可以执行构建
   agent any


   environment {

     WORKSPACE="${WORKSPACE}"

   }


   // 步骤
   stages {

		stage('打包') {
		    agent {
               docker {
                    image 'maven:3-alpine'
                    // 把maven /root/.m2 文件 挂载到m2_jar数据卷
                    args '-v m2_jar:/root/.m2'
                }
            }

			steps {
			    sh "echo 默认工作目录:${WORKSPACE}"
				// jenkins在解析流水线期间,可以任意访问jenkins家目录的位置和相关环境信息
				sh 'cd ${WORKSPACE} && mvn clean package -s "/var/jenkins_home/appconfig/maven/settings.xml" -Dmaven.test.skip=true '
			}
		}

		stage('生成镜像') {
			steps {
                sh 'pwd && ls -alh'
                sh 'docker rm -f springboot-demo && docker rmi -f springboot-demo:latest'
                sh 'docker build  -t springboot-demo .'
			}
		}
        

		stage('部署') {
			steps {
				echo "部署"
				sh 'docker run -d -p 8888:8888 -v springboot-demo-logs:/logs --name springboot-demo  springboot-demo:latest'
			}
		}
   }
}

测试:
在这里插入图片描述
修改controller后push代码。
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

响彻天堂丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值