Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布
环境:Windows 2008 R2、Jenkins2.235.1、Visual Studio 2017;
概要
前面写过一篇文章,《自动发布-asp.net自动发布、IIS站点自动发布(集成SLB、配置管理、Jenkins)》,这个主要是用于投产环境运维平台自动发布的集成,对于前面的环节使用Jenkins构建包,并发布到测试环境并没有详细的说明,现在发文记录一下。
分成两篇来写《Jenkins持续集成(上)-Windows下安装Jenkins》、《Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布》。
正文
一、配置MSBuild与FTP;
1、MSBuild:先在服务器上面安装Visual Studio 2017或更高版本,也可以单独安装MSBuild,不过为了方便调试,最好是直接安装VS。
然后在Jenkins上面配置,打开“Manage Jenkins”-->“Global Tool Configuration”-->“MSBuild”,指定安装的MSBuild目录;

2、FTP:在服务器上面安装FTP功能,然后在IIS上新建FTP站点(注意点:a、用户名注意不要用ftp,使用ftpuser这类,使用标准用户,不使用管理员;b、SSL认证 选择无;c、FTP身份验证 选择基本身份验证;d、FTP授权规则 选择指定用户,如:ftpuser)。
然后在Jenkins上面配置,打开“Manage Jenkins”-->“Configure System”-->“Publish over FTP”,配置主机名,端口默认为21,可以点击“Test Configuration”进行测试;

二、配置全局参数;
为了快速配置任务,以及统一修改,建议任务构建里面的变量全部采用参数化来控制,涉及到统一的用全局参数来控制,如:SVN地址;
在Jenkins上面配置,打开“Manage Jenkins”-->“Configure System”-->“全局属性”,勾选“Environment variables”,输入键值,键名称就是参数名;

三、配置Asp.net构建任务
“新建Item“,输入任务名称,选择”流水线“或叫”工作流“任务,
1、指定最大保留历史构建版本;

2、指定任务自定义的工作空间,不指定则全部默认为系统统一路径,如果任务数太多并且没有做集群的情况下,建议把任务的工作空间分散在多个磁盘上,需要注意自定义工作空间的路径,不要跟系统的安装路径一样,否则可能安装目录下面的文件被删掉。

3、配置SVN分支选择下拉;


效果如下:

4、配置源代码路径:

5、配置MSBuild构建参数:
/t:Rebuild
/p:VisualStudioVersion=15.0
/p:DeployOnBuild=true
/p:LastUsedBuildConfiguration=Debug
/p:LastUsedPlatform="Any CPU"
/p:WebPublishMethod=FileSystem
/p:LaunchSiteAfterPublish=True
/p:ExcludeApp_Data=False
/p:DeleteExistingFiles=True
/p:WPPAllFilesInSingleFolder=${WORKSPACE}\build\build_test1_A_10001
注意:p:WPPAllFilesInSingleFolder,表示把文件生成到指定文件夹,为了后面能够利用FTP把文件传过去,这里必须为工作空间下面的路径,如:D:\JenkinsWorkspaceAB\test1_A_10001_test_OrderProcessAPI\default\default;

6、把文件夹进行压缩,以便FTP进行传输;
7、配置FTP传输;

8、解压文件夹,切换IIS目录,重启站点、浏览测试页;
这几步我是通过自己写了一个接口给Jenkins去调用实现,好像还有一些现成的工具可以用,不过感觉这个自己写比较灵活,可以自由定制;

9、构建后归档:

Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布的更多相关文章
- .NET持续集成与自动化部署之路第一篇——半天搭建你的Jenkins持续集成与自动化部署系统
.NET持续集成与自动化部署之路第一篇(半天搭建你的Jenkins持续集成与自动化部署系统) 前言 相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛 ...
- .NET 半天搭建Jenkins持续集成与自动化部署系统
前言 相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛.由于我们所做的系统业务复杂,系统庞大,设计到多个系统之间的合作,而核心系统更是采用分布式系统架构,由 ...
- Jenkins持续集成01—Jenkins服务搭建和部署
一.介绍Jenkins 1.Jenkins概念 Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Je ...
- Jenkins持续集成-自动化部署脚本的实现
要实现Jenkins端的持续集成,其实在CI服务配置端很容易,难点呢?就是如何实现自动化的部署.我的脚本设计就是为了解决以下难题: 难点一.如何使得自动化部署脚本更通用 我用的脚本,依赖依赖一个配置文 ...
- 《转载》Jenkins持续集成-自动化部署脚本的实现《python》
本文转载自慕课网 读者须知:1.本手记本着记续接前面的两张手记内容整理2.本手记针对tomcat部署测试环境实现 最近工作比较繁忙,导致这章一直拖延,没有太抽出时间来总结.要实现Jenkins端的持续 ...
- linux环境下搭建Jenkins持续集成(Jenkins+git+shell+maven+tomact)
准备环境 jenkins.war包 ,jdk1.8 ,tomact , maven,git 1.Jenkins war包,下载地址https://jenkins.io/zh/download/ ...
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(四):发布与回滚
写在前面 我们以前windows跑.net Framework程序的时候,发布,自己乖乖的替换程序:备份,也是自己一个一个的重命名备份:回滚,发布遇到问题的回滚更是不用说了:运维很是怕我们 这些用wi ...
- git+jenkins持续集成二-jenkins定时构建语法:定时构建语法
构建位置:选择或创建工程_设置_构建触发器 1. 定时构建语法:* * * * * (五颗星,多个时间点,中间用逗号隔开)第一个*表示分钟,取值0~59第二个*表示小时,取值0~23第三个*表示一个月 ...
- jenkins持续集成:jenkins+SVN
实现jenkins从svn拉取最新的代码,再执行驱动脚本进行自动化测试 新建一个任务 输入任务名,选“构建一个自由风格的软件项目”,点左下角“确定” 丢弃旧的构建,如下设置为保留3天内的10条构建记录 ...
随机推荐
- redis必知会
Redis 是单进程单线程的? Redis 是单进程单线程的,redis 利用队列技术将并发访问变为串行访问,消 除了传统数据库串行控制的开销. Redis 的持久化机制是什么?各自的优缺点? Red ...
- rabbitmq+sleuth+zinkip 分布式链路追踪
我们都知道,微服务之间通过feign传递,在复杂的微服务架构系统中,几乎每一个前端请求都会形成一个复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟超时或者错误都有可能引起整个请求最后的失 ...
- P4017 最大食物链计数 (拓扑排序)
看到拓扑排序感觉非常遥远的复杂,不喜欢图.看了拓扑排序的原理,很像广搜. 以本题样例为例: 了解一下 出度 和 入度 5的出度为3 入度为 0 ,3的出度为2 入度为2…… for循环 找到秃头 5 ...
- C++语法小记---类型检测
类型检测 C++使用typeid关键字进行类型检查 不同的编译器使用typeid返回的类型名称不严格一致,需要特别注意 也可以使用虚函数,返回各自的类型名 如果typeid的操作数不是类类型(类指针也 ...
- APP自动化 -- contexts(上下文切换)
一.上下文是什么? 1.解释 1)在混合型APP中包含了 原生页面 和 H5页面,如果需要进入APP内嵌的H5页面里面去操作就需要先切换进去,如果要继续回到原生页面操作就需要切回来. 2)这个就像是 ...
- Python延迟初始化(lazy property)
转自:https://blog.csdn.net/azsx02/article/details/77649527 Python 对象的延迟初始化是指,当它第一次被创建时才进行初始化,或者保存第一次创建 ...
- Java 异常处理专题,从入门到精通
内置异常和Throwable核心方法 Java内置异常 可查异常(必须要在方法里面捕获或者抛出) ClassNoFoundException 应⽤程序试图加载类,找不到对应的类 IllegalAcce ...
- layui常用插件(一) 轮播图
轮播图 <html lang="en"> <head> <meta charset="UTF-8"> <meta ht ...
- HttpServletRequest、HttpServletResponse
doGet()/doPost()方法都有两个参数,一个为代表请求的request,另一个代表响应response. request是获取前台传递的内容,response是反馈给前台数据 HttpSer ...
- 4. JSON字符串是如何被解析的?JsonParser了解一下
公司不是你家,领导不是你妈.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BA ...