搭建Jenkins并自动发布项目到IIS

注意:本文描述的是在Windows系统上安装Jenkin,并使用IIS来托管.Net项目。

安装Jenkins

  1. 首先先安装一些基础的依赖工具。一个是源代码管理工具Git。因为源代码肯定是有单独的代码仓库存储的,所以需要相应的工具,允许Jenkins自动从代码仓库拉取最新代码。注意,这是看实际项目使用的是什么工具就装什么,并不是非得装Git。
    另外一个就是编译工具和编译环境。本文是以.Net项目举例,那就需要安装MSBuild。由于电脑上已经安装了Visual Studio,所以已经有了,就不给出安装步骤说明了。如果是.Net Core项目,还要安装.Net Core SDK。

  2. 然后去Jenkins官网下载安装包。 由于是在Windows系统上安装,自然要下载Windows版本。下载下来的文件叫Jenkins.msi,双击直接安装。它会自动打开浏览器,在浏览器中操作。这里说明一点,网上的教程大多都是下载一个war包,然后还要先安装jdk才能进行安装,并且提到Jenkins的运行依赖于jdk。但实际使用过程中根本不需要安装Jdk,可能因为是Windows版本的原因。

    Jenkins下载

  3. 启动安装包后,一路看着点就行了。中间会要求输入默认的管理员密码。密码在安装目录下的一个文件里,路径在安装界面上有显示,如下图所示。


    输入管理员密码
  4. 然后要安装插件。由于不清楚各种插件的功能,所以就直接安装默认项安装。有挺多插件的,还容易安装失败。虽然可以重试,但重试也容易失败。不过也不要紧,只要能到下一步就行,安装失败的插件,等运行起Jenkins之后还是可以再补充安装的。

  5. 安装完成后等待Jenkins启动,完成后浏览器会自动跳转到登陆页面。如果没有也可以手动输入地址跳转,注意Jenkins默认端口是8080。初次登陆要求先创建一个管理员账户,当然也可以选择直接使用默认的管理员账户,账户是admin,初始密码就是步骤2中用到的密码,登陆后可以修改密码。

  6. 安装完成后还需要进行一些配置。点击主页的“Manage Jenkins”,进入到管理页面。


    进入管理页面

然后点击“Global Tool Configuration”,进入到全局工具配置。


进入全局工具配置

在这里配置之前安装的Git工具路径。Name是可以随意的。


配置Git工具

还要配置MSBuild.exe所在的根目录。Name也是可以随意的。


配置MSBuild

建立项目

  1. 点击菜单中的“New Item”,新建一个项目


    新建项目
  2. 输入项目名称,并选择"Freestyle project"(自定义风格项目)


    选择项目风格
  3. 开始填写项目相关信息。一些不重要的这里就不列举了,自行摸索。这里仅列举一些关键性配置项。

    • 配置源码路径。先选择源码管理工具。之前已经安装了Git,这里就选择Git。然后配置源代码仓库地址,还要添加身份验证信息,并配置好要构建的分支。


      配置源码路径
    • 配置构建操作。点击“Add build step”按钮,添加编译或发布的步骤。


      选择用MSBuild

    这里选择“Build a Visual Studio project or solution using MSBuild”,意思就是通过MSBuild来编译和发布.Net项目。需要注意的是,如果是.Net Core项目,可以不用这么操作,下文会说明。
    如下图所示,MSBuild Version选择之前配置的MSBuild版本即可,Build File填写解决方案或项目的路径。下面的参数,是传给MSBuild.exe的,也就是说这是由具体的编译工具决定的,不是由Jenkins决定的。


    配置构建步骤

    如果是.Net Core项目,可以如下操作。先选择添加“Execute Windows batch command”,意思是添加执行Windows批处理命令。


    以命令行编译.Net Core项目

    然后输入以下命令。第一行命令是进入要发布的项目所在的目录。第二行命令是.Net Core CLI的发布命令。可以看到该命令没有指定任何项目名称,这代表着它会自动寻找当前目录下可发布的项目,所以才需要第一行命令先跳转到项目根目录。执行此发布命令,与在Visual Studio上直接执行发布操作一样,生成的文件会保存在默认的Release文件夹下,具体路径可以待构建完成后看构建日志。.Net Core常用的命令还有dotnet restoredotnet build。调用dotnet publish时,它会自动先调用前两个命令的。使用.Net Core CLI的编译和发布命令时,需要注意项目或其引用的项目中是否包含非.Net Core项目,如果包含,会编译失败。
    注意,这些命令已经与Jenkins本身没有关系了,具体使用方式自行参考相关文档。
    [图片上传失败...(image-d116a2-1598929064068)]

    如此就建立了一个基本的可编译的项目。接下来还要添加脚本,将编译生成的文件拷贝到IIS站点对应的目录中。再添加一个执行Windows批处理命令的步骤,输入如下命令。
    [图片上传失败...(image-d1d21f-1598929064068)]
    图片看不清楚,可以直接看以下代码:

C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"IIS站点的应用程序池名称"

robocopy ".\src\项目路径\bin\Release\netcoreapp2.2\publish"  "C:\app\IIS站点目录" /XF "要排除的文件名1" "要排除的文件名2" "要排除的文件名3"
robocopy ".\src\项目路径\bin\Release\netcoreapp2.2\publish\runtimes" "C:\app\IIS站点目录\runtimes" /e
robocopy ".\src\项目路径\bin\Release\netcoreapp2.2\publish\wwwroot\swagger" "C:\app\IIS站点目录\wwwroot\swagger" /e

C:\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:"IIS站点的应用程序池名称"

第一行是关闭IIS站点的应用程序池,目的是为了防止复制文件过程中,出现文件被占用的情况。中间三行是从发布目录复制文件到IIS站点目录。其中用的参数说明如下:

  • /xf 指定要排除的文件,后面跟文件名,有多个就列举多个,空格分隔
  • /e 表示复制所有的子目录,包括空目录。如果没有此参数,就只复制目录下的文件,不复制子目录。
    第五行是再打开IIS站点的应用程序池。

这样就配置完成了,接下来可以进行发布了。

发布项目

一切配置完成后,点击项目的“Build Now”按钮即可开始构建。


开始构建项目

构建后就会产生一条构建记录。记录会包含构建进度、构建时间、构建结果和构建日志等信息。


构建记录

点击构建记录,进入详细的操作页面。点击“Console Ouput”就可以看到完整的构建日志了。


查看构建记录详情
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351