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

导读:本篇文章讲解 Jenkins + Gitlab+ Docker + SpringBoot 构建流水线,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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代码。
在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15033.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!