之前一直在linux中使用jenkins部署程序,正好现在的项目包括了winfrom程序,所以需要部署到windows系统中

jenkins官网:https://jenkins.io/

下载之后运行jenkins.msi即可傻瓜化安装,这里不再重复演示安装过程,如果遇到安装问题请自行百度。

首先,先介绍一下我的项目结构和发布流程:

项目由java与c#混合开发,使用微服务架构,一共2个子服务,一个win程序,还有eureka服务、网关服务

由于我使用的是springboot构建的项目,为了能够实现自动化发布,我选择适合winsw将我的jar包打包成windows服务 https://github.com/kohsuke/winsw

其中exe是使用.net 4.6开发的,为了能够让jenkins自动构建,我选择使用MSBuild来编译.net项目

1、创建一个新的认证

2、新建一个自由风格的项目

3、配置项目

这里我使用的GitHub来作为代码仓库,关于SVN在网上也有教程,可根据自己实际情况配置

要使用GitHub你需要先安装Github Plugin插件,不过新版本的jenkins默认已经给安装好了,只需配置一下本地的git.exe路径,注意要cmd文件夹下的git.exe

下面的GitHub hook trigger for GITScm polling是新版本jenkins的选项,以前jenkins是叫另外一个名字,反正带有GitHub关键词你选中就行

因为我是在windows系统中部署,所以使用的是批处理脚本,下面被遮挡是我项目的具体路径,因不想公布所以遮挡住

在批处理中我首先做了这么几件事:

1、jenkins从github上拉取项目源代码

2、判断本地工作空间是否存在publish文件夹(用于存放编译好的程序以及脚本)

  如果存在,首先调用stop脚本强制停止所有占用端口的程序,然后依次关闭对应的windows服务,最后把publish文件夹里的内容全部清空

  ps:先强制关闭是有原因的,因为程序被占用,你后面的清空操作不会成功的

  如果不存在,新建publish文件夹,将所有mvn clean package打包的jar文件从target目录拷贝到publish文件夹

3、调用MSBuild命令编译.sln解决方案

  /t:Rebuild
  /property:Configuration=Release
  /property:TargetFrameworkVersion=v4.6

    第一行是指的重新构建解决方案

  第二行是指的此次编译时Release方式而不是Debug方式

  第三行是指的使用Framework 4.6来编译项目

当MSBuild编译好项目之后, 把bin/Release文件夹中的所有文件全部拷贝到publish\app\Release文件夹中

4、发布到远程服务器

要使用这一步操作,你需要安装Publish over FTP插件并且配置他

到此整个自动发布过程就好了,但是自动部署还没完成,由于是windows操作系统,我没有办法使用Publish over SSH插件来远程执行shell命令,所以,我的解决方案是:

我将所有的操作都封装成了批处理脚本,这个脚本在自动发布的时候就已经带到了远程服务器中,我只需运行一下run.bat或者stop.bat即可完成所有服务和程序的安装卸载与运行停止

但我不想每次都连接服务器去发布,因为是测试环境,每次都连服务器发布很麻烦,所以我写了一个socket程序监听命令,收到指令后自动调用bat脚本

到此,全部结束!

jenkins+windows+springboot+.net项目自动化部署图文教程的更多相关文章

  1. Jenkins+windows+.netcore+git+iis自动化部署入门

    什么是自动化部署,就不介绍了,喜欢直接进入主题. 一. 所需环境: 1.系统为windows10 . 2.asp.net core3.1 runtime必须安装,因为我的代码是asp.net core ...

  2. 持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本

    持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本 一:本文通过jenkins调用shell脚本的的方式完成从Git服务器获取代码.打包.部署到web服务器.将web服务器从负 ...

  3. jenkins结合脚本实现代码自动化部署及一键回滚至上一版本

    持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本 一:本文通过jenkins调用shell脚本的的方式完成从Git服务器获取代码.打包.部署到web服务器.将web服务器从负 ...

  4. AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署

    AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署 Amazon ElastiCache 连接至 Redis 节点 通过 AWS Command Line Inter ...

  5. Windows服务器安装配置PHP7.0环境图文教程

    摘自http://www.111cn.net/phper/linux-php/109865.htm Windows服务器安装配置PHP7.0环境图文教程 www.111cn.net 更新:2016-0 ...

  6. jenkins实现maven项目自动化部署tomcat

    最近公司有用到jenkins实现自动化部署,这里我对新的东西也是比较感兴趣,就用了点时间尝试了一下,虽然网上有很多这种例子,但是可能有些细节我也走了一些弯路.在这里记录一下,方便下次用到. 实现环境: ...

  7. node项目自动化部署--基于Jenkins,Docker,Github(1)安装Jenkins

    前言 每次项目代码更新后都要重新部署,如果只有一台服务器还好. 但是如果是分布式系统,动不动就很多台服务器,所以代码的自动部署就显得十分重要了. 这里用几篇文章来记录一下如何使用Jenkins,Doc ...

  8. node项目自动化部署--基于Jenkins,Docker,Github(2)配置节点

    上一篇文章中准备工作已经完成的差不多了 这一篇主要讲解 Jenkins 上面的相关配置 为了让代码部署到所有的子节点上 所以我们首先需要在 Jenkins 中添加我们希望代码部署到的节点 配置节点 首 ...

  9. Kubernetes笔记(三):Gitlab+Jenkins Pipeline+Docker+k8s+Helm自动化部署实践(干货分享!)

    通过前面两篇文章,我们已经有了一个"嗷嗷待哺"的K8s集群环境,也对相关的概念与组件有了一个基本了解(前期对概念有个印象即可,因为只有实践了才能对其有深入理解,所谓"纸上 ...

随机推荐

  1. sort_region——对区域进行排序

    The operator sort_region sorts the regions with respect to their relative position. All sorting meth ...

  2. Please specify exact device preset UUID

    Please specify exact device preset UUID 重启RAD IDE,重新选择 IOS Simulator ,iphone 机型!

  3. swagger报No operations defined in spec!

    突然发现项目的swagger报No operations defined in spec! SWAGGER_SCAN_BASE_PACKAGE 路径改变了! package com.redis.con ...

  4. UNIX网络编程——socket的keep-alive(转)

    第一部分 [需求] 不影响服务器处理的前提下,检测客户端程序是否被强制终了. [现状] 服务器端和客户端的Socket都设定了keepalive属性. 服务器端设定了探测次数等参数,客户端.服务器只是 ...

  5. hibernate事务配置Aop aop:advisor模式

    <!-- 使用HibernateTransactionManager管理hibernate事务 --> <bean id="txManager" class=&q ...

  6. Jquery.Ajax的使用方法

    1.Get $('.manager_republish.notVIP').click(function () { $.ajax({ async: false, type: "get" ...

  7. java创建TXT文件并进行读、写、修改操作

    import java.io.*; /**  *   * 功能描述:创建TXT文件并进行读.写.修改操作  *        * @author <a href="mailto:zha ...

  8. python's unittest

    [python's unittest] unittest supports some important concepts: 从上图可以看到,unittest中的test-case.test-suit ...

  9. git本地代码库回滚(webstorm下)

    git本地代码库回滚(webstorm下) 1. 场景 添加了一个文件[file-for-test.js]到git的控制下(并没有push到远程分支上) 进行了三次修改,并分别进行了三次commit( ...

  10. 利用Fiddler对Android模拟器网络请求进行抓包

    安装使用Fiddler 下载安装Fiddler的方法这里就略过了,一路Next就行了.装好之后运行软件,正常情况这个时候我们已经可以对电脑的网络请求进行抓包了.Fiddler默认的代理地址是127.0 ...