Jenkins结合.net平台综合之权限修正和文件排除

笔者在发布项目的时候遇到这样一个问题,第一次发布的时候成功发布,而后再次发布失败.可是这个问题很快就排除了,这里提出来是为了帮助遇到这个问题的小伙伴,以顺利避开坑.之因此会这样是由于咱们在设置权限的时候只给给了用户读和写的权限,而没有给删除权限,所以形成没法覆盖文件. 服务器

解决办法很简单,咱们打开filezilla server,点击小人图标,进入用户设置页,而后点击shared folder进入目录权限配置栏 测试

这里咱们把全部的权限都勾选,重复发布失败的问题就解决啦. spa

下面咱们来解决另一个问题.咱们看一下发布到iis服务器上的文件结构,以下图 debug

首先发现的问题是.ApplicationInsight.config,Web.debug.config和Web.Release.config在服务器环境中都是没必要要的,可是整个目录复制把这些内容也复制来了. server

另一个问题是.Content,fonts这两个目录首次发布的时候拷贝过来就行了,之后发布不是每次都要拷贝这两个目录,复制太多静态资源也会影响发布效率,甚至有些状况下本机环境和测试服务器环境下Content文件夹的内容是彻底不同的,咱们根本不须要复制这个目录.咱们如何排除特定的文件和文件夹,只发布必要的内容呢. blog

这里取决于上图红色框选部分的配置,传输选项有一个FilemMask属性,它接收一个文本格式,用于指定包含/排除特定的文件/文件夹.根据上面的配置,ApplicationInsights.config文件就被排除了. 资源

咱们在Jenkins里再执行一次构建,能够看到此次上传到iis目录下的文件结构以下 io

ApplicationInsight.config文件已经被排除了. 效率

有些时候咱们须要排除一类文件,好比说咱们要排除全部的jpeg文件,此时的格式是$transferOptions.FileMask="|*.jpeg"其中*匹配任意字符 配置

多个须要排除的项之间用逗号隔开

如刚才所说,咱们有时候须要排除整个目录,而不单单是特定的文件或者特定类型的文件.好比咱们想要排除Cotent文件夹,此时语法是这样的

$transferOptions.FileMask="|Content/"content后面跟一个斜杠,用于指示它是要排除的目录,而不是文件

咱们把配置文件中关于文件过滤的一行改成以下

咱们清空iis目录下内容,而后再在Jenkins里触发一次构建,构建成功后,咱们打开iis目录,看到以下文件结构

能够看到ApplicationInsight.config文件和Content目录都没有发布.

大伙能够参考以上内容自行排除Web.Debug.config和Web.Release.Config