之前一直在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. JS倒计时,自动提交表单!

    <form id="frm" action="http://www.baidu.com"> 考试还剩余<div id="time&q ...

  2. Adjacent Bit Counts(uvalive)

    For a string of n bits x1, x2, x3,…, xn, the adjacent bit count of the string (AdjBC(x)) is given by ...

  3. <转>UNIX 共享内存应用中的问题及解决方法

    http://www.ibm.com/developerworks/cn/aix/library/au-cn-sharemem/ 共享内存是一种非常重要且常用的进程间通信方式,相对于其它IPC机制,因 ...

  4. MySQL数据库篇之完整性约束和表关系

    主要内容: 一.完整性约束 二.表关系 1️⃣ 完整性约束 (1)何为完整性约束? 约束条件与数据类型的宽度一样,都是可选参数. 作用:用于保证数据的完整性和一致性 (2)分类主要有以下五类: 1.n ...

  5. NPM设置代理

    npm获取配置有6种方式,优先级由高到底. 命令行参数. --proxy http://server:port即将proxy的值设为http://server:port. 环境变量. 以npm_con ...

  6. textarea文本域的高度随内容的变化而变化

    用css控制textarea文本域的高度随内容的变化而变化,不出现滚动条. CSS代码: 复制代码 代码如下: .t_area{ width:300px; overflow-y:visible } & ...

  7. java算法 第七届 蓝桥杯B组(题+答案) 2.生日蜡烛

    2.生日蜡烛  (结果填空) 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛.现在算起来,他一共吹熄了236根蜡烛.请问,他从多少岁开始过生日party的?请填写他开 ...

  8. EMC存储同时分配空间到两台服务器路径不一致-双机盘符不一致

    以下方式将i盘盘符换成g盘,g盘盘符换成i emcpadm rename -s emcpoweri -t emcpowerj emcpadm rename -s emcpowerg -t emcpow ...

  9. 二、SQL的生命周期

    MySQL的sql语句由客户端发出,经过连接和权限验证后,最终达到服务器端,由服务器分配thread线程处理,之后就是要介绍的具体服务器端的thread线程是怎么处理每条sql语句的.[ 了解thre ...

  10. Android有趣的全透明效果--Activity及Dialog的全透明(附android系统自带图标大全)[转]

    原文地址:http://blog.csdn.net/sodino/article/details/5822147 1.Activity全透明 同学zzm给了这个有趣的代码,现在公布出来. 先在res/ ...