如何用 jenkins 构建部署项目

Jenkins+vue项目自动化构建部署 Jenkins 更新地址:https://sunseekerx.yoouu.cn/common/jenkins.html 更新时间:2020-05-05 20:39:33 Vue项目自动化构建 Jenkins安装查看Docker章节。 Jenkins第一次安装完成最好重启一下,因为如果安装了语言包有些地方还是英文的。应该是个bug。 前提 Vue项目+Git 有Jenkins环境 有部署项目... 阅读详情

Jenkins(Build great things at any scale)

what is Jenkins

Jenkins是开源 CI(Continuous Integration:持续集成)&CD(Continuous Delivery:持续交付) 软件领导者, 提供超过 1000 个插件来支持构建、部署、自动化, 满足任何项目的需要,支持各种运行方式,可通过系统包, Docker 或者通过一个独立的 Java 程序。

原理: 看图(画图工具)
img

why use Jenkins

  • 持续集成和持续交付:作为一个可扩展的自动化服务器,Jenkins 可以用作简单的 CI 服务器,或者变成任何项目的连续交付中心。
  • 简易安装:Jenkins 是一个独立的基于 Java 的程序,可以立即运行,包含 Windows,Mac OS X 和其他类 Unix 操作系统。
  • 配置简单:Jenkins 可以通过其网页界面轻松设置和配置,其中包括即时错误检查和内置帮助。
  • 插件:通过更新中心中的 1000 多个插件,Jenkins 集成了持续集成和持续交付工具链中几乎所有的工具。
  • 扩展:Jenkins 可以通过其插件架构进行扩展,从而为 Jenkins 可以做的事提供几乎无限的可能性。
  • 分布式:Jenkins 可以轻松地在多台机器上分配工作,帮助更快速地跨多个平台推动构建,测试和部署。

Install

环境:ubuntu、docker、git

$ cat /etc/issue
Ubuntu 16.04.6 LTS \n \l
  • 拉去镜像

    • $ docker pull jenkinsci/blueocean
  • 根据拉取的 Jenkins 镜像启动一个容器

      $ docker run \
      -d \
      --name jenkins \
      -u root \
      -p 49001:8080 \
      -v /var/jenkins_home:/var/jenkins_home \
      -v /var/jenkins_ssh:/root/.ssh \
      -v /var/run/docker.sock:/var/run/docker.sock \
      jenkinsci/blueocean
    
    

    解释:

    • -d:守护模式,在后台运行。
    • -p:端口映射,49001 是服务器端口(可根据自己情况更改,别忘记安全组开放端口),8080 是容器端口(jenkins 程序默认端口)。
    • -v:挂载数据卷,/var/jenkins_home:/var/jenkins_home:将 Jenkins 目录挂载到宿主机;/var/jenkins_ssh:/root/.ssh:将 Jenkins 的 ssh 挂载到宿主机,备份用,防止重启后丢失找不到。
  • 查看容器运行情况:

      $ docker ps
      CONTAINER ID      IMAGE                COMMAND                  CREATED        STATUS           PORTS                                NAMES
      08a54d4a804a      jenkinsci/blueocean  "/sbin/tini -- /usr/…"   7 days ago     Up 7 days        50000/tcp, 0.0.0.0:49001->8080/tcp   jenkins
    

    附图:img

    以上说明已成功,若容器意外退出,去掉-d 参数执行,查看 log 来排错。

  • 现在开始设置 Jenkins,在浏览器访问 你的服务器ip:49001,会出现以下界面:
    img

    • 想进入要先解锁,密码就在 /var/jenkins_home/secrets/initialAdminPassword 文件里,怎么查看呢?两种方案:

      1. 首先要进入刚刚启动的 jenkins 容器里面,执行 $ docker exec -it jenkins bash,然后 $ cat /var/jenkins_home/secrets/initialAdminPassword。
      2. 由于运行容器时,已经将 Jenkins 目录挂载到了宿主机,所以可以不用进入容器,直接在宿主机执行 $ sudo cat /var/jenkins_home/secrets/initialAdminPassword。
    • 将上一步的密码复制到浏览器,点击 continue 按钮进行下一步。
      附图:img

    • 安装插件,选择推荐安装即可。

=================================================

上面是基本的安装,我用的是时候官方文档还是英文的,目前支持中文,想了解更详细内容,请去官网,下面开始教大家新建一个 自由构建的任务(鉴于目前网上大都是多机教程,即项目和 jenkins 不在一台服务器上,又考虑到小伙伴们手中可能只有一台自己的机器,所以我下面要讲的是 单机运行项目和 Jenkins)

=================================================

  • 打开 ip:49001进入首页,点击系统管理:
    img

  • 首先点击插件管理,搜索并安装一下插件(若已安装列表已存在可忽略):

    • Build Name Setter
    • Dingding[钉钉] Plugin
    • Build Timestamp Plugin
    • Git Parameter Plug-In
    • Publish Over SSH
    • SSH Slaves plugin
    • Timestamper
  • 然后点击系统设置:

    • 找到 Build Timestamp (上面的插件提供的),进行如下设置:

      • Asia/Shanghai
      • yyyy-MM-dd-HH-mm-ss-SSS

      img

    • 找到 Publish over SSH,这个相对麻烦些,进行如下设置:

      img

      说明:

      • Passphrase:SSH 的 password。有两种情况:1. 使用 username/password 登录时为 username 的 password;2. 使用私钥登录时为私钥的 password。
      • Path to key:SSH 私钥的文件路径。可以是绝对路径,也可以是相对$JENKINS_HOME 的相对路径。
      • Key:私钥,私钥导出后的文本内容,假设“Key”和“Path to key”都设置,则“Key”的优先级较高,此时“Passphrase”中设置的内容应该是私钥的 password。
      • Disable exec:禁止在目标机上运行命令,勾选后将会忽略在 Job 配置中“Exec command”选项中设置的命令。

      补充:由于 Jenkins 是在 docker 容器中运行的,所以上面的配置应该是容器的 ssh 配置,而不是宿主机的。如上图,我是通过 ssh 私钥进行的登陆。

      步骤:

      • $ docker exec -it jenkins sh,进入容器。
      • $ ssh-keygen -m PEM -t rsa -b 4096,生成 ssh 私钥及公钥(默认在 ~/.ssh 即 /root/.ssh 目录中),可以一路回车,若设密码的话,需在“Passphrase”中填写。
      • $ cat ~/.ssh/id_rsa,查看私钥,把私钥 copy 到上图的“key”设置中。
      • $ cat ~/.ssh/id_rsa.pub,查看公钥,把公钥 copy 到宿主机的 ~/.ssh/authorized_keys 中。

      至此,Jenkins 的 ssh 配置就完成了,接下来要配置远程机(咱们是单机,所以宿主机就当成远程机来配置)的 SSH Servers 了:
      img

      说明:

      • Name:SSH 节点配置的名称,可随意设置,他将在 job 配置的“SSH Server”的下拉列表中,如图:
        img
      • Hostname:通过 SSH 连接到的机器的主机名或 IP。
      • Username:SSH 服务使用的 username,使用 key 进行连接时为 key 指定的 username。
      • Remote Derictory:运程机器上真实存在的文件夹,而且“Username”指定的用户要有訪问此文件夹的权限。插件将把文件传送到此文件夹下。一般是存放项目的目录。
  • 测试,点击“Test Configuration”按钮,如 success,这配置成功,进行下一步,新建任务。

下面开始新建任务:

  • 在首页点击“新建任务”,输入名称(建议和 github 的项目名称保持一致),选择第一个“构建一个自由风格的软件项目”,然后点击确定:
    img

  • 返回首页,可以列表中看到刚刚新建的任务,点击名称,进入任务详情:
    img

  • 在任务详情页,点击配置,进行项目配置:
    img
    配置:
    img
    img
    img
    img
    img
    补充:(shell 脚本都在项目的 deploy 目录下)

    • Exec command:

      #!/usr/bin/env bash
      echo '************************************** 发送至服务器成功 **********************************************'
      
      # 项目名,取自环境变量
      projectName="${JOB_NAME}"
      dockerImageName=${projectName}-${BUILD_TIMESTAMP}
      
      # step1 解压源代码
      echo " ************************************* 解压源代码${dockerImageName}.tar.gz start *************************************"
      
      projectPath='/var/nodejs/' # 需要单独给用户赋目录/var/nodejs/的权限 sudo chown ubuntu /var/nodejs/
      sudo mkdir -p ${projectPath}${projectName} || true \
      && cd ${projectPath}${projectName} \
      && sudo rm -rf *  # 删除里面的数据
      
      sudo tar -zxf ../${dockerImageName}.tar.gz -C ./ \
      && sudo rm  ../${dockerImageName}.tar.gz   # 删除发布过来的包
      
      echo " ************************************* 解压源代码${dockerImageName}.tar.gz finish *************************************"
      
      # step2 构建docker镜像
      echo " ************************************* 构建docker镜像${dockerImageName} start *************************************"
      sudo docker build -t ${dockerImageName} --force-rm .
      echo ' ************************************* 构建docker镜像 finish *************************************'
      
      # step3 重启容器
      echo "************************************* 使用镜像${dockerImageName}启动容器${projectName}  start *************************************"
      # 错误日志统一存放在/var/nodejs/logs/${projectName}
      sudo mkdir -p /var/nodejs/logs/${projectName} || true \
      && sudo docker stop ${projectName} || true \
      && sudo docker rm ${projectName} || true \
      && sudo docker run -d --net=host --name ${projectName} -v /var/nodejs/logs/${projectName}:/var/nodejs/${projectName}/logs ${dockerImageName}
      
      echo "************************************* 使用镜像${dockerImageName}启动容器${projectName}  finish *************************************"
      
      echo '************************************************ 查看docker容器情况: ************************************************ '
      sudo docker ps -a
      echo '************************************************ 查看docker容器情况: ************************************************ '
      
    • 如果项目需要在容器里构建,通常初次构建时间相对较长,所以可以把高级设置中的“Exec timeout”设的稍微大一些。

    • 构建-执行 shell-命令:

      #!/usr/bin/env sh
      projectName="${JOB_NAME}"
      dockerImageName=${projectName}-${BUILD_TIMESTAMP}
      
      echo '*********************************** 准备打包从Github仓库拉取的代码...*********************************************'
      echo "**********${WORKSPACE}**********"
      tar --exclude=node_modules --exclude=.git --exclude='*.tar.gz'  -vzcf /tmp/${dockerImageName}.tar.gz -C  ${WORKSPACE} .  \
      && mv /tmp/${dockerImageName}.tar.gz  ${WORKSPACE} \
      && echo '*********************************** 打包成功 *********************************************' \
      && echo '************************************** 准备发送至服务器... **********************************************'
      
    • 构建后操作,钉钉通知配置教程

  • 完成项目的任务配置,点击保存。

  • 返回任务详情也,点击“Build with Parameters”,选择分支,点击“开始构建”:
    img

  • 在构建历史列表中,点击最新的一条构建记录,再点“击控制台输出”,可查看构建的 log:
    img
    最终 log 输出:Finished: SUCCESS,则成功。v
    构建后,钉钉会收到通知。

如果有问题,需要版本回滚怎么办呢?

我们可以新建一个任务用于版本回滚:

  • 回到首页,点击新建,起个名字如:newblog-rollback。

  • 在列表点击 newblog-rollback,进入任务详情,点击配置,进入配置页:
    img
    img
    img
    补充:(shell 脚本都在项目的 deploy 目录下)

    • Exec command:

      #!/usr/bin/env sh
      
      trim()
      {
          trimmed=$1
          trimmed=${trimmed%% }
          trimmed=${trimmed## }
          echo "$trimmed"
      }
      
      # projectName=$(trim "${container_name}")
      projectName="newblog"
      
      dockerImageName=$(trim "${image_name}")
      
      echo "******************************************* 回退到镜像${image_name} ,并启动容器${container_name} **************** *******************************"
      sudo mkdir -p /var/nodejs/logs/${projectName} || true \
      && sudo docker stop ${projectName} || true \
      && sudo docker rm ${projectName} || true \
      && sudo docker run -d --net=host --name ${projectName} -v /var/nodejs/logs/${projectName}:/var/nodejs/${projectName}/logs ${dockerImageName}
      echo "************************************* 使用镜像${dockerImageName}启动容器${projectName}  finish *************************************"
      
  • 测试版本回滚,首先,你要知道要回退到哪个版本,在 newblog 任务列表中 copy 你要回退的镜像名:
    img
    img
    img
    img
    最终 log 输出:Finished: SUCCESS,则成功。

最终成果:http://140.143.0.171:8080

【参考】:

  1. https://jenkins.io/
  2. N-blog
jenkins 部署 和构建java项目 jenkins部署 阅读详情

相关推荐

Jenkins构建项目并部署到K8S实践

CICD部署到K8S集群

a492391142的博客 1680

Jenkins教程(自动化部署)

因为开发部门同时维护多个版本,多个版本的发布,测试需要大量人力,所以要有一个专业的持续集成工具来管理持续重复的工作。个人理解,说白了就是把代码测试、打包、发布等工作交给一些工具来自动完成。这样可以提高效率,减少失误,开发人员只需要关心开发和提交代码到。

weixin_39655220的博客 3万+

Jenkins 实践指南:使用 Jenkins 进行项目构建与部署

Jenkins 是一个开源的自动化服务器,可以用于构建、测试和部署软件项目。它提供了强大的扩展性和灵活性,使得开发团队能够轻松地实现持续集成和持续交付。本文将向您展示如何使用 Jenkins 进行项目构建和部署的实际操作步骤,并提供相应的源代码示例。

DkDebug的博客 238

Jenkins 详细部署

Jenkins是一个可扩展的持续集成引擎。持续集成,就是通常所说的CI(ContinuesIntegration),可以说是现代软件技术开发的基础。持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。...

m0_63674789的博客 2万+

通过Jenkins实现Java项目的构建和自动部署

我是Jenkins单独部署了一台服务器, 项目本身呢也是单独部署一台服务器, 也就是两台服务器, 这里呢举例A机器部署Jenkins,B机器部署你的项目,A机器需要JDK和MAVEN和GIT, JDK和maven都是构建项目要用的,而GIT呢是为了从你的远程仓库(Gitlab/Bitbucket等等)拉取代码, 对应B服务器你的项目部署需要什么资源你就需要安装什么, 比如最基本的jdk, 因为肯定是要启动项目的。前置脚本为了杀死原先的java进程 清理原先的旧文件。选择你项目需要的就行了我的是3.6.1。

ZPJ优快云的博客 1719

Python实战:5分钟搞定高德地图API批量地址转经纬度(附完整代码)

本文提供了一套完整的Python解决方案,利用高德地图Web服务API,实现批量地址到经纬度坐标的自动化转换。文章包含从API申请、核心代码编写到错误处理与性能优化的全流程实战指南,并附赠数据可视化方法,帮助数据分析师和开发者快速提升地理信息处理效率。

weixin_29047919的博客 583

Jenkins详细安装配置部署--超详细

CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了 新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确 地集成在一起。CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近 真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环 境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。

weixin_59663288的博客 1万+

别再折腾老教程了!树莓派4B/5最新系统(Raspberry Pi OS Bookworm)红外遥控配置,用gpio-ir驱动一次成功

本文详细介绍了树莓派4B/5在最新Raspberry Pi OS Bookworm系统下配置红外遥控的完整指南,摒弃过时的lirc-rpi驱动,采用现代gpio-ir驱动方案。从硬件连接到软件配置,提供10分钟快速上手指南,涵盖驱动加载、信号测试、按键映射及高级应用场景,帮助用户高效完成红外遥控配置。

weixin_42520909的博客 443

手把手教你部署Jenkins教程,小白也能学会(多图预警)!

公司的前端、后端构建及部署工作都是人工去做,随着业务扩大,项目迭代速度变快,人员增多,各种问题都暴露出来,将通过一个简单案例分享一下基于Jenkins的前后端自动化工作流搭建的过程,搭建完这套工作流,我们只需要在本地发起一个git提交,剩下的单打包构建,代码部署,邮件提醒等功能全部自动化完成,让持续集成、持续交付、持续部署变得简单易操作,真正解决人工构建部署的诸多问题。坚定信念,执着追求,成功终将属于你!例如:发送目标服务器前,先备份当前服务器运行的服务包,就需要定制化的shell脚本去执行这个操作。

nhb687096的博客 2048

Mac本地大模型实战指南:Ollama+Metal+Apple Silicon深度优化

大语言模型(LLM)本地化部署正成为开发者关键技术能力,其核心在于推理效率、硬件适配与成本控制。Apple Silicon凭借统一内存架构(UMA)和Neural Engine,为本地LLM运行提供了独特优势;Metal加速则显著提升GPU计算吞吐,使Gemma 4、Qwen 3.5等模型在M系列Mac上实现低延迟、高精度、离线可用的工程落地。相比云端API,本地方案规避了token计费、网络依赖与数据外泄风险,特别适用于企业文档处理、实时语音分析、私有知识库检索等强隐私、低时延场景。本文聚焦Mac平台,系

weixin_33443333的博客 354

Android系统开发工程师面试指南与参考答案

本文整理了Android系统开发工程师面试常见问题与参考答案。核心内容涵盖:1)Framework层定制方法,如修改HAL和系统服务;2)ANR问题分析工具(systrace)与解决方案;3)性能优化实践,包括开机加速和功耗管理;4)四大组件工作机制与应用案例;5)Native崩溃调试技巧。文章强调通过AOSP源码研究、工具使用和项目案例准备来提升面试表现,重点考察应聘者的系统开发深度和实操能力。参考答案均基于实际开发经验,提供可量化的优化成果说明。

郑伟强dev的专栏 258

Jenkins中一个项目的构建

我们这里用的是Git代码库,首先把项目的链接复制过来,然后需要添加一个能够登陆的用户,下边add添加一个就行,如果这个地方总是返回128错误,应该是Jenkins添加秘钥到Git了,但是还没有进行过登陆的确认,这个时候到服务器上进行一次代码的clone,然后就会看到这个地方的报错消失了。如果是第一次构建,那么这个地方会从nexus库当中下载很多需要的依赖包,但是这些并不是我想展示出来看的,真正想看到的是,Jenkins会在自己的工作目录当中创建这样一个项目,然后将所有的代码给拉取过来,随后进行编译的动作。

m0_55461869的博客 828

通信算法之264: DJI O2 协议物理层逆向工程解析

对于 DroneID,标志之间的间隙由循环前缀 (CP) 填充:每个标志末尾的副本附加在相应标志的开头。有了关于确切标志开始的信息,可以使用 FFT 将标志转移到频域 - 来自时域的 1024 个样本导致频域中的 1024 个子载波。使用比特流的解扰和涡轮解码,并将生成的数据映射到如上的DroneID 结构,通过逆向工程在无人机的固件中找到了它。注意到一些无人机(Mavic 2 和更早的 OcuSync 无人机)不发送第一个标志(标志 1),这导致更短的帧持续时间为 576 µs。//产品型号数字代号。

leegang12的专栏 3949

jenkins构建及部署项目

一、maven项目 1.复制配制文件 #!/bin/bash echo "复制配置文件..." cp -fr /var/lib/jenkins/workspace/hms-background.te/config/* /var/lib/jenkins/workspace/hms-background.te/src/ 2. 部署到tomcat 二、部署nodeJS项目 1、构建配置 #!/bin/bash echo -n "当前路径:" pwd echo "环境变量: ${PATH}".

duguluohong的专栏 467

11、Windows Autopilot 部署与设备注册全攻略

本文详细介绍了Windows Autopilot的完整部署流程,涵盖注册配置文件设置、注册状态页面(ESP)配置、设备注册方法(包括CSV导入、JSON注入、在线注册等)、自动化脚本实现及故障排除技巧。通过手动与PowerShell自动化两种方式指导用户完成配置,并提供流程图、最佳实践和常见问题解答,帮助IT管理员高效实现设备零接触部署与管理。

ii567的博客 343

Qt C++ 串口调试助手

1. **串口配置**:支持自动检测可用串口,可配置波特率(9600~921600)、数据位(5~8)、校验位(无/奇/偶/标记/空格)、停止位(1/1.5/2)。- HEX 模式发送时,输入格式需为十六进制字符(0-9、A-F),可带空格(如 `01 A3 FF`)或不带空格(如 `01A3FF`)。// 发送模式:true=HEX,false=ASCII。// 字符串转HEX字节数组。ui->parity->addItems({"无", "奇校验", "偶校验", "标记校验", "空格校验"});

寒寒豆豆软件公司的博客 149

jenkins自动化构建、部署项目

本次总结由以下三个方面: 1、了解什么是jenkins以及jenkins能干什么 2、如何安装、配置jenkins 3、如何使用jenkins进行项目的构建、部署 一、自动化部署的场景 •1、项目还在开发阶段(jenkins) • 1.1、经常升级功能,测试人员需要不断的测试 • 1.2、需要经常的演示项目给领导或者客户查看 • 迭代是非常的频繁...

从前端菜鸟到全栈工程师的进阶 1074

生存曲线绘制及图例标签添加(使用R语言)

数据应该包含两列:一个是表示个体生存时间的时间变量(通常称为"时间(time)“)和一个是表示个体是否发生事件(如死亡)的事件变量(通常称为"事件(event)”)。通过修改上述代码中的数据和参数,您可以根据自己的需求绘制生存曲线,并添加相应的图例信息和标签。生存曲线是在生存分析中常用的工具,用于描述一组个体随时间的存活概率。函数的第一个参数指定图例的位置,这里我们选择了右上角(“topright”)。包来进行生存曲线的绘制,并通过添加图例信息和标签来增强可视化效果。的数据框,包含这两列数据。

CyberXZ的博客 558

【CICD】Jenkins 构建部署前端项目

Git 推送代码,触发webhook;Jenkins 服务被触发,执行构建;Jenkins 通过 SSH 推送代码至服务器.

就是有点怕怕的博客 1762

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Jenkins 实战指南-项目自动构建部署全流程通关

本文详细介绍了使用Jenkins实现Java项目自动化部署的全流程。主要内容包括:Jenkins环境搭建(JDK17、Maven3.8+、Git、MySQL8.0)、Pipeline脚本编写(代码拉取、编译、测试、打包、部署)、远程服务器SSH部署配置、SonarQube代码质量检查集成、邮件通知构建结果等核心功能实现。文章还提供了常见问题解决方案,如权限问题、测试失败处理等。

果酱 の 博客 1263

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

用Jenkins自动构建部署SpringBoot项目

目录 1.前提条件 2.安装Jenkins 3.插件安装 4.安装jdk 5.安装maven 6.配置ssh 7.构建项目 8.构建后自动部署 9.Git提交后自动构建 1.前提条件 一台服务器 建议配置2h4g以上(1h2g的属实有点低了) sspringboot项目手动用maven打包,且jar包可正常运行 如果你的是多模块项目(如图),需要配置好打包,否则启动失败 就像这样的项目,可浏览文章:SpringBoot多模块打包方式 ...

可小辉的博客 2183

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Jenkins自动构建部署SpringCloud项目

一、Jenkins 安装和环境变量配置 1. Jenkins 安装 环境:centos8 参考:https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos sudo install wget sudo wget -O /etc/yum.repos.d/jenkins.repo \ https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://

JAVA_XCNH的博客 2769

linux中安装部署Jenkins,成功构建springboot项目详细教程

3.1.3 依次点击“Personal access tokens” -> “Tokens(classic)” -> “Generate new token”按钮。参考别人配置Jenkins的git地址为https,无法连上github拉取项目,所以本章节介绍通过配置SSH地址来连github拉取项目。如下图,把地址ip改为自己部署Jenkins的服务地址就好了,后面的“/github-webhook/”要加上。查看公钥,上图中/home/company/.ssh/id_rsa.pub文件。

weixin_38423249的博客 1930

Jenkins自动构建部署项目到远程服务器上

1.下载jenkins 下载地址:https://jenkins.io/ 启动jenkins方式有2种 1.1切换到jenkins.war包的存放目录 启动命令: java -jar jenkins.war 启动jenkins 访问: localhost:8080 就能...

皓亮君的博客 11万+

使用jenkins进行项目的自动构建部署

jenkins 简介 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布/测试项目和监控外部调用执行的工作。 官网地址地址: https://jenkins.io 下载安装启动 CentOS 下用yum进行安装启动 # 先更新源再安装最新版 jenkins sudo wget -O /etc/yum.repos.d/jenkins.r...

WEI的博客 891

jenkins安装部署及项目构建部署详解

使用jenkins部署项目,可以说在一定程度上解放了人力反复部署的困扰,但它的功能绝不仅于此。下面开始jenkins的学习之旅 一.jenkins介绍 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:   1、持续的软件版本发布/测试项目。   2、监控外部调用执行的工作。 二.为什么要使用jenkins(jenkins的优点) 1 、j...

happyAliceYu的博客 2889
上一篇: Git pull 强制覆盖本地文件
下一篇: 微信小程序配置ESlint
leoxiaoge
博客等级 码龄10年 17粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

leoxiaoge

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

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

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

打赏作者

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

抵扣说明:

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

余额充值