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

2023-10-30

环境安装

创建目录

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

	cd /
	mkdir docker
	cd docker
	mkdir maven 
	mkdir jenkins
	mkdir java
	mkdir registry

宝塔

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

docker

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

  • 修改docker 配置 可远程访问

    vim  /lib/systemd/system/docker.service
    
    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
    
  • 重载配置重启

    systemctl daemon-reload && systemctl restart docker
    

maven

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

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

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

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

    mkdir repository
    

    在这里插入图片描述

  • 修改maven settings.xml 文件

    cd /docker/maven/apache-maven-3.8.6/conf
    vim settings.xml
    
      <mirror>
    	  <id>alimaven</id>
     	 <name>aliyun maven</name>
     	 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    	  <mirrorOf>central</mirrorOf>
     </mirror>
    
     <localRepository>/docker/maven/repository/repo</localRepository>
    

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

java

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

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

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

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

本地仓库

  • 下载镜像

    docker search registry
    

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

    docker pull registry
    
  • 启动容器

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

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

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

    systemctl restart docker 
    

jenkins

  • 拉取jenkins 镜像

    docker search jenkins 
    

    在这里插入图片描述

  • 挂载容器卷启动容器

    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
    

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

    -v /var/run/docker.sock:/var/run/docker.sock  
    -v /usr/bin/docker:/usr/bin/docker
    

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

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

    cd /docker/jenkins
    vim hudson.model.UpdateCenter.xml
    

    改为清华镜像

    <sites>
      <site>
       <id>default</id>
     <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.json</url>
     </site>
    </sites>
    
  • 解决插件安装慢问题
    替换 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
    
  • 登录 开始安装依赖
    原始密码在initialAdminPassword文件内

    cd /docker/jenkins/secrets
    cat initialAdminPassword
    

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
{
    "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/"
        }
    ]
}

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

后端Maven项目构建单模块

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

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

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

  • pom.xml配置

    	<build>
        <finalName>app</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- docker的maven插件,官网: https://github.com/spotify/docker‐maven‐plugin-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.0</version>
                <configuration>
                    <imageName>192.168.0.107:5000/${project.artifactId}:${project.version}</imageName>
                    <baseImage>jdk1.8</baseImage>
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                    <dockerHost>http://192.168.0.107:2375</dockerHost>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

后端Maven项目构建多模块

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

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

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

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

    echo "在指定docker目录创建Dockerfile文件用于生成docker容器"
    cd yshop-app/target
    cat>Dockerfile<<EOF
    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
    
    
    
    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}
    
    
  • 配置 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文件目录
    
    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文件目录
    
    
  • 其他的git地址配置 Webhook 都一样

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jenkins + 云效 前后端项目自动化部署 的相关文章

随机推荐

  • FFmpeg中编码类型为rawvideo无须解码直接显示测试代码

    在 https blog csdn net fengbingchun article details 93975325 中介绍过通过FFmpeg可以直接获取usb视频流并解码显示的测试代码 当时通过usb获取到的视频流编码类型为AV COD
  • macos 环境下搭建 windbg 虚拟机双机调试环境

    求职 阿哈哈哈广告来了 博主本人 23届落魄web安全 在线求职 本科学历有一段大厂实习 有缺人的大佬么或者有内推的大佬给个机会吧 求求啦 可以微信联系我给您简历 ocean888 文章底下有二维码 本次使用将在 macos 环境下搭建 w
  • flask入门教程(7) - 会话

    会话 flask提供了session对象 即会话 允许你在不同请求之间储存信息 这个对象相当于用密钥签名加密的cookie 即用户可以查看你的cookie 但是如果没有密钥就无法修改它 这是我的网站词神上的cookie 大家可以打开我的网站
  • blender_(uv应用)................http://digitalman.blog.163.com/blog/static/23874605620174172058299/...

    轻松学习Blender基础入门之九 UV 1 2017 06 21 14 24 49 分类 Blender 举报 字号 订阅 下载LOFTER 我的照片书 前言
  • LittleFs文件系统

    小型文件系统 littlefs 简介 LittleFs设计之初的重点特性是 1 低资源消耗 2 掉电保护 3 擦写均衡 本章节重点讨论第 2 和 3 这两个特性 第 1 个特性则贯穿在整个设计过程中 后文把LittleFs简称为lfs 1
  • FaceForensics++数据集下载,FaceForensics++: Learning to Detect Manipulated Facial Images

    FaceForensics 数据集下载 FaceForensics Learning to Detect Manipulated Facial Images 0 前言 如何运行 主要是前三个超参数 不同压缩率所需的空间需求 code 0 前
  • 数据集批量打标——shell脚本批量生成文件并重命名

    shell脚本批量生成文件并重命名 最近接到一个数据集标注的任务 使用的标注工具是LabelImg 使用前配置了环境Anaconda python 3 7 Linux 并在该环境下配置了pyqt5 数据集里的图片是一段视频逐帧抽图 要求在图
  • CCNA学习笔记九 NAT地址转换及优缺点

    网络地址转换 将很多的私网地址转换成公网IP Telnet 快 可以被拦截 ssh ssl加密 安全 改变IP包头 使目的地址 源地址或两个地址在包头中被不同的地址替换 路由器会保存一个转换表 当数据包回来的时候 还原成正确的私网地址 NA
  • LED数码管数字数据集

    LED数码管数字数据集 结合百度OCR取得很好效果 数据集结合百度的OCR百度的OCR https gitee com paddlepaddle PaddleOCR tree release 2 1 程序对应数据集训练进行目标检测识别 数据
  • 在github上托管属于自己的网页

    文章目录 前言 一 配置github 1 建立新的仓库 repository 二 配置git 1 git与github连接 2 测试git与github的连接 3 通过git上传 删除github仓库中的文件 4 网页显示 5 更换域名 总
  • Anaconda安装、源配置、虚拟环境搭建、及Python常用软件安装详解(详细教程)

    首先先介绍一下各种安装软件的基本介绍和常见命令 基本介绍 Anaconda 是可以便捷获取包且对包能够进行管理 同时对环境可以统一管理的发行版本 Anaconda包含了conda Python在内的超过180个科学包及其依赖项 conda是
  • 山东大学软件学院软件项目管理复习

    考前整理的复习题 有一些考试考到了 分享给下一级吧 1 项目目标的制约因素 项目范围 成本 进度计划 客户满意度 三个约束 范围 成本 时间 项目范围是为使客户满意必须做的工作 成本是完成项目所需要的费用 进度计划安排每项任务的起始时间和所
  • pre标签显示服务器端txt文档,区域设计pre显示标签pre

    区域设计pre显示标签pre 内容精选 换一换 在现场讲解汇报 实时监控等场景下 为了获得更好的演示效果 通常需要将态势感知服务的分析结果展示在大型屏幕上 如果只是单纯将控制台界面放大显示 视觉效果并不是很理想 此时可以利用综合大屏 展示专
  • Java并发修改异常ConcurrentModificationException

    import java util ArrayList import java util Iterator import java util ListIterator public class ConcurrentModificationEx
  • A complete log of this run can be found in:

    npm run dev npm ERR code ENOENT npm ERR syscall open npm ERR path C Users Administrator Desktop 项目名 package json npm ERR
  • 什么是设计模式?程序员如何学好设计模式?

    前几天 我给大家介绍了算法和数据结构的基础知识 后来又有小伙伴私信问我 小灰 你能不能也讲一讲设计模式的相关知识 没问题 对于程序员来说 设计模式也是必须要掌握的一项核心知识 我今天就来给大家重点讲一讲 编程的痛点 那么 到底什么是设计模式
  • 上海市“星光计划”职业院校技能大赛 网络安全竞赛试题任务书

    2023上海市 星光计划 职业院校技能大赛 网络安全竞赛试题任务书 2023上海市 星光计划 职业院校技能大赛 网络安全竞赛试题任务书 A模块基础设施设置 安全加固 200分 A 1 登录安全加固 A 2 Web安全加固 Web A 3 流
  • linux2.4内核模块隐藏,Linux环境下的高级隐藏技术

    摘要 本文深入分析了Linux环境下文件 进程及模块的高级隐藏技术 其中包括 Linux可卸载模块编程技术 修改内存映象直接对系统调用进行修改技术 通过虚拟文件系统proc隐藏特定进程的技术 隐藏技术在计算机系统安全中应用十分广泛 尤其是在
  • 学习笔记 JavaScript ES6 Reflect

    学习内容 将Object属于语言内部的方法放到Reflect上 修改某些Object方法的返回结果 让其变得更合理 让Object操作变成函数行为 Reflect对象的方法与Proxy对象的方法相辅相成 将Object属于语言内部的方法放到
  • Jenkins + 云效 前后端项目自动化部署

    环境安装 创建目录 后续下载的内容 放在里边方便管理 cd mkdir docker cd docker mkdir maven mkdir jenkins mkdir java mkdir registry 宝塔 不在赘述 前往官网有安装