ad770f3bfa83804500f51385e83d3c91.gif

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号等等功能:

  • Boot 项目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • Cloud 项目地址:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

来源:blog.csdn.net/qq_39940205
/article/details/126159330

d2cc5e17fd8b7403d1c6612051b1f593.jpeg


需求: 使用jenkins搭建流水线实现持续集成持续部署

一、编写docker-compose.yml安装jenkins, jenkins的版本是带blueocean插件的版本

version: '3'
services:
  mysql:
    image: mysql:8.0.29
    container_name: mysql
    restart: always
    ports:
      - 3306:3306
    privileged: true
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    volumes:
      - /mydata/mysql/data/db:/var/lib/mysql #数据文件挂载
      - /mydata/mysql/data/conf:/etc/mysql/conf.d #配置文件挂载
      - /mydata/mysql/log:/var/log/mysql #日志文件挂载
  redis:
    image: redis:7
    container_name: redis
    restart: always
    command: redis-server --requirepass 1234566 --appendonly yes
    volumes:
      - /mydata/redis/data:/data
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 6379:6379
  nginx:
    image: nginx:1.22
    container_name: nginx
    restart: always
    volumes:
      - /mydata/nginx/nginx.conf:/etc/nginx/nginx.conf #配置文件挂载
      - /mydata/nginx/html:/usr/share/nginx/html #静态资源根目录挂载
      - /mydata/nginx/log:/var/log/nginx #日志文件挂载
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 80:80
  rabbitmq:
    image: rabbitmq:3.9-management
    container_name: rabbitmq
    restart: always
    ports:
      - 5672:5672
      - 15672:15672
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /mydata/rabbitmq/data:/var/lib/rabbitmq #数据文件挂载
      - /etc/localtime:/etc/localtime:ro
  mongo:
    image: mongo:4
    container_name: mongo
    restart: always
    volumes:
      - /mydata/mongo/db:/data/db
    ports:
      - 27017:27017
    environment:
      TZ: Asia/Shanghai
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 123456
    command: --auth
  jenkins:
    image: jenkinsci/blueocean
    container_name: jenkins
    restart: always
    user: root
    ports:
    - 8080:8080
    - 50000:50000
    volumes:
    - /mydata/jenkins_home:/var/jenkins_home
    - /etc/localtime:/etc/localtime:ro
    - /var/run/docker.sock:/var/run/docker.sock

/mydata/jenkins_home目录配置maven的阿里源

c378e97d6511cbd3e9ad6827d738a5f9.png
<?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">
  <pluginGroups>
  </pluginGroups>
  <proxies>
  </proxies>
  <servers>
  </servers>
  <mirrors>
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
  <localRepository>/root/.m2</localRepository>
  <profiles>
        <profile>
                <id>jdk-1.8</id>
                <activation>
                        <jdk>1.8</jdk>
                </activation>
                <properties>
                        <maven.compiler.source>1.8</maven.compiler.source>
                        <maven.compiler.target>1.8</maven.compiler.target>
                        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
                </properties>
        </profile>
  </profiles>
</settings>

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

二、登录xxx:8080配置jenkins

1、初始密码使用 docker logs jenkins 查看获取

2、安装插件 Docker Pipeline, 后面构建流水线需要

72e04aef007d8afd47ec3c082f98321a.png

3、准备一个项目,提交到Gitee

46ca08aa8851bb26035a8a7376a27f04.png

创建两个文件 Jenkinsfile和Dockerfile

pipeline{
    agent any
    environment {
      WS = "${WORKSPACE}"
      IMAGE_NAME = "java-devops-demo"
    }
 
    //定义流水线的加工流程
    stages {
        //流水线的所有阶段
        stage('1.环境检查'){
            steps {
               sh 'pwd && ls -alh'
               sh 'printenv'
               sh 'docker version'
               sh 'java -version'
               sh 'git --version'
            }
        }
 
        stage('2.编译'){
            agent {
                docker {
                    image 'maven:3-alpine'
                    args '-v maven-repository:/root/.m2'
                 }
            }
            steps {
               sh 'pwd && ls -alh'
               sh 'mvn -v'
               sh 'cd ${WS} && mvn clean package -s "/var/jenkins_home/appconfig/maven/settings.xml" -Dmaven.test.skip=true'
            }
        }
 
        stage('3.打包'){
            steps {
               sh 'pwd && ls -alh'
               sh 'docker build -t ${IMAGE_NAME} .'
            }
        }
 
        stage('4.部署'){
            // 删除容器和虚悬镜像
            steps {
               sh 'pwd && ls -alh'
               sh 'docker rm -f ${IMAGE_NAME} && docker rmi $(docker images -q -f dangling=true)'
               sh 'docker run -d -p 8888:8080 --name ${IMAGE_NAME} -v /mydata/logs/${IMAGE_NAME}:/logs/${IMAGE_NAME} ${IMAGE_NAME}'
            }
        }
    }
}
FROM openjdk:8-jre-alpine

> 基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
>
> * 项目地址:<https://github.com/YunaiV/yudao-cloud>
> * 视频教程:<https://doc.iocoder.cn/video/>

# 将当前目录下的jar包复制到docker容器的/目录下
COPY target/*.jar /app.jar
# 运行过程中创建一个xx.jar文件
RUN touch /app.jar;
 
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"
ENV PARAMS=""
 
# 声明服务运行在8080端口
EXPOSE 8080
# 指定docker容器启动时运行jar包
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -jar /app.jar $PARAMS" ]

4、jenkins首页首页左侧的新建任务,输入任务名称,选择流水线

f9af0103fda5d10c74add925f49c008e.png

5、配置流水线

c9c376fe9409292a8c283e21c25b208f.png

6、返回首页点击'打开 Blue Ocean'选择运行

b5770554046203b0e67d10e5cc30c197.png

到此整体功能已经完成

三、测试

370cb2b928f40df36fcd95ca51865ff2.png

四、触发远程构建

d073784a605e56957e4213c291911d53.png a215de04686ac409e97430161a838d8d.png

创建一个jenkins账号用来触发远程构建

ad9087825bed6f7f638b0ed11eba37b8.png

构建maven项目

a355f0c61d36a00d00ece7cf04d6e6b5.png

欢迎加入我的知识星球,全面提升技术能力。

加入方式,长按下方二维码噢

514085a4774976565667f5f6a9ab66b1.jpeg

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

f84e4f5fa92d2b1f3665126ade904bc2.png

b9336be48cc5cca33fc0609ea0918d74.png7d6102ad64b8d1bc42111f6d92680628.png8d0c6acfa0141be0f87d631732a864a4.png1d918b7db2116a0a86a5476b99e04fc3.png

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
Logo

快速构建 Web 应用程序

更多推荐