• Jenkins + 云效 前后端项目自动化部署


    环境安装

    创建目录

    后续下载的内容 放在里边方便管理

    	cd /
    	mkdir docker
    	cd docker
    	mkdir maven 
    	mkdir jenkins
    	mkdir java
    	mkdir registry
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    宝塔

    不在赘述 前往官网有安装命令 宝塔下载页面

    docker

    • 安装docker后 打开安装docker
      在这里插入图片描述

    • 修改docker 配置 可远程访问

      vim  /lib/systemd/system/docker.service
      
      • 1
      ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
      # ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --			containerd=/run/containerd/containerd.sock
      ExecReload=/bin/kill -s HUP $MAINPID
      TimeoutSec=0
      RestartSec=2
      Restart=always
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 重载配置重启

      systemctl daemon-reload && systemctl restart docker
      
      • 1

    maven

    • 前往maven下载页面
      在这里插入图片描述

    • 选择版本下载 如:apache-maven-3.8.6-bin.tar.gz

    • 上传至服务器/docker/maven目录下 解压

      tar –xvf apache-maven-3.8.6-bin.tar.gz
      
      • 1
    • 创建仓库保存目录

      mkdir repository
      
      • 1

      在这里插入图片描述

    • 修改maven settings.xml 文件

      cd /docker/maven/apache-maven-3.8.6/conf
      vim settings.xml
      
      • 1
      • 2
        <mirror>
      	  <id>alimavenid>
       	 <name>aliyun mavenname>
       	 <url>http://maven.aliyun.com/nexus/content/groups/public/url>
      	  <mirrorOf>centralmirrorOf>
       mirror>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
       <localRepository>/docker/maven/repository/repolocalRepository>
      
      • 1

      阿里云镜像
      在这里插入图片描述
      配置本地仓库
      在这里插入图片描述

    java

    • 前往官网下载JDK oracle官方下载地址 (你发任你发 我用JAVA8)
      在这里插入图片描述

    • 选择版本下载 如:jdk-8u351-linux-aarch64.tar.gz

    • 上传至服务器/docker/java目录下 解压

      tar –xvf jdk-8u351-linux-aarch64.tar.gz
      
      • 1

    本地仓库

    • 下载镜像

      docker search registry
      
      • 1

      在这里插入图片描述
      下载官方的

      docker pull registry
      
      • 1
    • 启动容器

      docker run -d -v /docker/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:latest
      
      • 1
    • 访问http://ip:5000/v2/_catalog 看到 {“repositories”:[]} 表示成功

    • 修改/etc/docker/daemon.json 第二行 没有的话可以不加 可以去docker镜像服务申请 详见docker镜像私服

      {
        "insecure-registries":["192.168.0.107:5000"],
        "registry-mirrors": ["**********"]
      }
      
      • 1
      • 2
      • 3
      • 4
    • 重启docker

      systemctl restart docker 
      
      • 1

    jenkins

    • 拉取jenkins 镜像

      docker search jenkins 
      
      • 1

      在这里插入图片描述

    • 挂载容器卷启动容器

      docker run -d -p 18080:8080 -p 50000:50000 --privileged=true -u root -v 			   /docker/jenkins:/var/jenkins_home 
      -v /docker/maven/apache-maven-3.8.6:/usr/local/apache-maven 
      -v /docker/java/jdk1.8.0_341:/usr/local/java/jdk1.8 
      -v /var/run/docker.sock:/var/run/docker.sock  
      -v /usr/bin/docker:/usr/bin/docker 
      -v /www/wwwroot:/www/wwwroot 
      -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --name jenkins jenkins
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      这两个解决jenkins shell docker命令找不到问题

      -v /var/run/docker.sock:/var/run/docker.sock  
      -v /usr/bin/docker:/usr/bin/docker
      
      • 1
      • 2

      这个为前端项目部署创建 挂载目录

      -v /www/wwwroot:/www/wwwroot 
      
      • 1
    • 解决离线问题

      cd /docker/jenkins
      vim hudson.model.UpdateCenter.xml
      
      • 1
      • 2

      改为清华镜像

      <sites>
        <site>
         <id>defaultid>
       <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.jsonurl>
       site>
      sites>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 解决插件安装慢问题
      替换 default.json内的内容

      cd /docker/jenkins/updates
      sed -i 's/www.google.com/www.baidu.com/g' default.json
      sed -i 's/updates.jenkins-ci.org\/download/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
      #重启 Jenkins
      docker restart jenkins的容器id
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 登录 开始安装依赖
      原始密码在initialAdminPassword文件内

      cd /docker/jenkins/secrets
      cat initialAdminPassword
      
      • 1
      • 2

    jenkins配置

    全局工具配置

    maven

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

    jdk

    在这里插入图片描述

    系统配置

    环境变量

    在这里插入图片描述

    配置自动化发布

    安装插件 Maven Integration plugin

    在这里插入图片描述

    安装插件 Generic Webhook Trigger

    在这里插入图片描述

    安装插件 NodeJS

    在这里插入图片描述
    解决node无法下载

    cd /docker/jenkins/updates
    touch hudson.plugins.nodejs.tools.NodeJSInstaller
    vim hudson.plugins.nodejs.tools.NodeJSInstaller
    
    • 1
    • 2
    • 3
    {
        "list":[
            {
                "id":"12.16.3",
                "name":"NodeJS 12.16.3",
                "url":"https://nodejs.org/dist/v12.16.3/"
            },
            {
                "id":"9.9.0",
                "name":"NodeJS 9.9.0",
                "url":"https://nodejs.org/dist/v9.9.0/"
            },
            {
                "id":"9.8.0",
                "name":"NodeJS 9.8.0",
                "url":"https://nodejs.org/dist/v9.8.0/"
            },
            {
                "id":"9.7.1",
                "name":"NodeJS 9.7.1",
                "url":"https://nodejs.org/dist/v9.7.1/"
            }
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    全局工具配置 NodeJS
    在这里插入图片描述

    后端Maven项目构建单模块

    • 创建maven项目
      在这里插入图片描述

    • 配置git地址以及账号 在这里插入图片描述

    • 构建配置 生成镜像(若直接执行镜像 可在配置执行shell)
      在这里插入图片描述

    • pom.xml配置

      	<build>
          <finalName>appfinalName>
          <plugins>
              <plugin>
                  <groupId>org.springframework.bootgroupId>
                  <artifactId>spring-boot-maven-pluginartifactId>
              plugin>
              
              <plugin>
                  <groupId>com.spotifygroupId>
                  <artifactId>docker-maven-pluginartifactId>
                  <version>1.2.0version>
                  <configuration>
                      <imageName>192.168.0.107:5000/${project.artifactId}:${project.version}imageName>
                      <baseImage>jdk1.8baseImage>
                      <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]entryPoint>
                      <resources>
                          <resource>
                              <targetPath>/targetPath>
                              <directory>${project.build.directory}directory>
                              <include>${project.build.finalName}.jarinclude>
                          resource>
                      resources>
                      <dockerHost>http://192.168.0.107:2375dockerHost>
                  configuration>
              plugin>
          plugins>
      build>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28

    后端Maven项目构建多模块

    • 创建maven项目
      在这里插入图片描述

    • 配置git地址以及账号 在这里插入图片描述

    • 构建配置 生成镜像
      在这里插入图片描述

    • 构建成功后执行shell
      在这里插入图片描述

      echo "在指定docker目录创建Dockerfile文件用于生成docker容器"
      cd yshop-app/target
      cat>Dockerfile<FROM jdk1.8
      ADD /app.jar //
      ENTRYPOINT ["java", "-jar", "/app.jar"]
      # ENTRYPOINT ["java", "-jar", "/admin.jar",">> ","/var/logs/log.log","&"]
      EOF
      
      echo "清理已有容器及镜像资源"
      container="yshop-app"
      image=${container}
      
      if docker ps | grep ${container} ;then
         docker stop ${container}
      fi
      
      if docker ps -a | grep ${container};then
          docker rm ${container}
      fi
      
      if docker images | grep ${image};then
          docker rmi ${image}
      fi
      
      echo "镜像制作"
      docker build -t ${image} .
      echo "容器运行"
      docker run -d --restart=always --name ${container} -v  	/usr/local/project/tidePlayMall/app/logs:/var/logs -p 8008:8008  ${image}  -Duser.timezone=GMT+8
      # docker run -d --restart=always --name ${container} -v /usr/local/project/tidePlayMall/admin/avatar:/usr/local/project/tidePlayMall/admin/avatar -v /usr/local/project/tidePlayMall/admin/file:/usr/local/project/tidePlayMall/admin/file -v  /usr/local/project/tidePlayMall/admin/logs:/var/logs -p 8001:8001  ${image}  -Duser.timezone=GMT+8
      
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      echo "在指定docker目录创建Dockerfile文件用于生成docker容器"
      cd yz-server/target
      cat>Dockerfile<<EOF
      FROM jdk1.8.0_341
      ADD /yz-server.jar //
      ENTRYPOINT ["java", "-jar", "/yz-server.jar"]
      # ENTRYPOINT ["java", "-jar", "/admin.jar",">> ","/var/logs/log.log","&"]
      EOF
      
      echo "清理已有容器及镜像资源"
      container="yz-server"
      image=${container}
      
      if docker ps | grep ${container} ;then
         docker stop ${container}
      fi
      
      if docker ps -a | grep ${container};then
          docker rm ${container}
      fi
      
      if docker images | grep ${image};then
          docker rmi ${image}
      fi
      
      echo "镜像制作"
      docker build -t ${image} .
      echo "容器运行"
      docker run -d --restart=always --name ${container} -p 48080:48080 -e TZ=Asia/Shanghai -v /usr/local/project/groupBuy/api/:/usr/local/project/groupBuy/api/ ${image}
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
    • 配置 Webhook

      • 变量
        在这里插入图片描述

      • token(自定义)
        在这里插入图片描述

      • 云效
        在这里插入图片描述

        http://JENKINS_URL/generic-webhook-trigger/invoke?token=**********
        内网服务器 可以做个内网穿透

        在这里插入图片描述

    前端vue项目部署

    • 宝塔创建站点
      在这里插入图片描述

    • 配置构建环境
      在这里插入图片描述

    • 执行sell

      node -v
      npm install 
      rm -rf ./dist/*  #移除工作区dist文件
      npm run-script build  #打包项目
      rm -rf /www/wwwroot/192.168.0.107/dist/*  #删除/www/wwwroot/192.168.0.107/dist上一次构建文件
      cp -rf ./dist/* /www/wwwroot/192.168.0.107/dist  #将打包后的dist文件拷贝	到/www/wwwroot/192.168.0.107/dist ,/www/wwwroot/192.168.0.107/dist为nginx文件目录
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      node -v
      npm install 
      rm -rf ./dist/*  #移除工作区dist文件
      npm run build:prod  #打包项目
      distDir="/www/wwwroot/******/dist"
      if [ -d $distDir ]
      then
       	echo "dist路径已存在"
      else
        	mkdir $distDir
      fi
      rm -rf /www/wwwroot/******/dist/*  #删除/www/wwwroot/******/dist上一次构建文件
      cp -rf ./dist/* /www/wwwroot/******/dist  #将打包后的dist文件拷贝	到/www/wwwroot/******/dist ,/www/wwwroot/******/dist为nginx文件目录
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
    • 其他的git地址配置 Webhook 都一样

  • 相关阅读:
    优维产品使用最佳实践:实例拓扑
    Docker多平台、跨平台编译打包
    Java面向对象进阶7——代码块
    2023年【广东省安全员A证第四批(主要负责人)】考试试卷及广东省安全员A证第四批(主要负责人)模拟考试
    【HarmonyOS】低代码平台组件拖拽使用技巧之页签容器
    xss-labs/level8
    Stable Diffusion云服务器部署完整版教程
    for(auto count : counts)
    k8s day04
    安卓高通机型的基带移植 修改 编译的相关 增加信号 支持5G等
  • 原文地址:https://blog.csdn.net/qq_44407005/article/details/127623811