博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最简单的window下使用Jenkins来做自动化部署的教程
阅读量:5248 次
发布时间:2019-06-14

本文共 4381 字,大约阅读时间需要 14 分钟。

今天我们来说一下,如何使用Jenkins+powershell脚本,将我们的.NET CORE的脚本部署到对应的服务器上.

这里我们使用的源码管理工具是TFS.虽然源码管理器比较老旧,但是原理都差不多.

1.安装Jre,因为我们的Jenkins是基于java开发的,所以需要先在服务器上安装java的运行时环境

这个安装过程比较简单,百度下载JRE,然后安装,暂且不表.

下载地址:https://www.java.com/en/download/manual.jsp

 

2.下载并安装Jenkins,这里服务器是Windows的,所以最好下载Windows版本的,安装好以后直接就以Windows服务的形式运行了.

这个安装过程也是非常的简单,网上教程很多.

https://jenkins.io/download/

3.安装好Jenkins以后,根据需要我们安装权限插件,给不用的账号配置不通过的权限,(此步骤可选)

具体可参看此文章,说的很详细:

https://blog.csdn.net/qq_16320025/article/details/82897577

 

4.最关键的一步来了,就是如何使用Jenkins来自动部署我们的代码.

这里主要分以下几个小点,下面我会贴出详细的代码.

1)获取TFS中的最新源码,这里我并没有通过Jenkins去获取代码,而是通过tf命令去拉取代码的.

这样的好处就是,所有的Jenkins任务的源代码,我都可以使用同一份,而不用每个任务单独去拉取一份代码.

2)拉取到代码以后,自然就是通过命令来编译我们的代码,熟悉.net的朋友们应该都知道,无非就那几个命令了

3)代码发布出来以后,自然就是要将代码copy到我们的站点或者Windows服务下面去.

这一步也很简单,无非就是通过命令停止iis站点和应用程序池;copy代码;重启启动对应的站点即可

一套下来,打完收工.

 

下面贴出几个关键步骤的截图:

1.Jenkins创建自由风格的任务

 

2.其他什么都可以不选,只要我们使用powershell脚本,需要Jenkins支持powershell也需要安装插件

可参看如下链接:https://blog.csdn.net/ff55fff/article/details/76804966

 

 3.点击保存,一套搞定.点击build now即可

 

 

ps:下面给出详细的powershell脚本,非常简单这里就不详述了,大家一看代码就明白了

1 net stop Test1Job 2  3 C:\Windows\System32\inetsrv\appcmd.exe stop site Test1.test.com 4 C:\Windows\System32\inetsrv\appcmd.exe stop site Test1.api.test.com 5  6  7 C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"test1.test.com" 8 C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"Test1.api.test.com" 9 10 dir "$PSScriptRoot\lib" -Filter "*.ps1" | foreach {11  . $_.fullName12  Write-Host "Import $($_.fullName)"13 }14 15 16 17 18 #1.获取源码19 D:\test\tools\get_tfs.bat20 21 #2.编译源码22 dotnet build D:\test\Source\MTools\Source-Promotion\Test.API.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore23 echo API OK24 25 dotnet build D:\test\Source\MTools\Source-Promotion\Test.Web.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore26 echo WEB OK27 28 dotnet build D:\test\Source\MTools\Source-Promotion\Test.Job.WindowsService.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore  -v q29 echo job OK30 31 32 Sleep 2033 34 35 #3.发布36 37 CCopy D:\test\Source\MTools\Test.\Source-Promotion\Test.API\bin\Debug\netcoreapp2.1 D:\Test\Test1\api38 CCopy D:\test\Source\MTools\Test.\Source-Promotion\Test.Web\bin\Debug\netcoreapp2.1 D:\Test\Test1\web39 CCopy D:\test\Source\MTools\Test.\Source-Promotion\Test.Web\wwwroot D:\Test\Test1\web\wwwroot40 CCopy D:\test\Source\MTools\Test.\Source-Promotion\Test.Job.WindowsService\bin\Debug\netcoreapp2.1\win-x64 D:\Test\Test1\job41 42 43 44 net start Test1Job45 C:\Windows\System32\inetsrv\appcmd.exe start site Test1.test.com46 C:\Windows\System32\inetsrv\appcmd.exe start site Test1.api.test.com47 48 49 C:\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:"test1.test.com"50 C:\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:"Test1.api.test.com"51 52 53 Write-Host "success"54 Get-Date
View Code
1 function  CCopy($folder_a_path,$folder_b_path) 2 { 3     if(!(test-path $folder_b_path)) 4     { 5         md $folder_b_path 6     } 7  8     #遍历源文件夹下所有文件 9     $folders_a = gci $folder_a_path -Recurse10     foreach ($folder_a in $folders_a)11     {12     13      if($folder_a.fullname -like "*appsettings.json*")14      {15         continue16      }17     18       #通过替换的方式,取目标文件的全路径名称19       $b = $folder_a.fullname.replace($folder_a_path,$folder_b_path) 20       #判断目标文件是否存在,如果存在则先判断新旧21       If (test-path $b)22         {23          #判断目标是否为目录,如果是目录则跳过,如果不跳过,则会创建一级空目录24          If (!((gi $b).PSIsContainer))25           {26            #判断目标文件、源文件的新旧情况,如果目标已存在文件的修改时间早于源文件,则重新拷贝覆盖27            If ((gci $b).lastwritetime -lt $folder_a.lastwritetime)28             {29              copy-item $folder_a.fullname $b -force30             }31           }32         33         }34       #如果目标文件不存在,则直接拷贝35       Else36         {37          copy-item $folder_a.fullname $b38         }39         40     }41 }
复制文件

一套打完手工,大家有什么意见和建议,请提出~

后续将进一步写通过powershell将程序发布到其他服务器上,以及发布完成以后,邮件告知结果

"D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\TF.exe" workspaces /collection:http://tfs.xx.net:8080/tfs/xxerp  /login:leishen,pwd"D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\TF.exe" get  /recursive $/MTools /login:leishen,pwd
TFS获取代码

 

待续...

转载于:https://www.cnblogs.com/xinzhyu/p/10924311.html

你可能感兴趣的文章
xib文件加载后设置frame无效问题
查看>>
编程算法 - 左旋转字符串 代码(C)
查看>>
IOS解析XML
查看>>
Python3多线程爬取meizitu的图片
查看>>
树状数组及其他特别简单的扩展
查看>>
zookeeper适用场景:分布式锁实现
查看>>
110104_LC-Display(液晶显示屏)
查看>>
httpd_Vhosts文件的配置
查看>>
php学习笔记
查看>>
普通求素数和线性筛素数
查看>>
PHP截取中英文混合字符
查看>>
【洛谷P1816 忠诚】线段树
查看>>
电子眼抓拍大解密
查看>>
poj 1331 Multiply
查看>>
tomcat7的数据库连接池tomcatjdbc的25个优势
查看>>
Html 小插件5 百度搜索代码2
查看>>
P1107 最大整数
查看>>
多进程与多线程的区别
查看>>
Ubuntu(虚拟机)下安装Qt5.5.1
查看>>
java.io.IOException: read failed, socket might closed or timeout, read ret: -1
查看>>