window下使用Jenkins来做自动化部署的教程图解

 更新时间:2019年05月26日 10:36:06   作者:隨風.NET  
今天我们来说一下,如何使用Jenkins+powershell脚本,将我们的.NET CORE的脚本部署到对应的服务器上,需要的朋友可以参考下

今天我们来说一下,如何使用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://www.jb51.net/article/161947.htm

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

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

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

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

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

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

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

一套下来,打完收工.

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

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

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

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

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

net stop Test1Job
C:\Windows\System32\inetsrv\appcmd.exe stop site Test1.test.com
C:\Windows\System32\inetsrv\appcmd.exe stop site Test1.api.test.com
C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"test1.test.com"
C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"Test1.api.test.com"
dir "$PSScriptRoot\lib" -Filter "*.ps1" | foreach {
 . $_.fullName
 Write-Host "Import $($_.fullName)"
}
#1.获取源码
D:\test\tools\get_tfs.bat
#2.编译源码
dotnet build D:\test\Source\MTools\Source-Promotion\Test.API.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore
echo API OK
dotnet build D:\test\Source\MTools\Source-Promotion\Test.Web.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore
echo WEB OK
dotnet build D:\test\Source\MTools\Source-Promotion\Test.Job.WindowsService.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore -v q
echo job OK
Sleep 20
#3.发布
CCopy D:\test\Source\MTools\Test.\Source-Promotion\Test.API\bin\Debug\netcoreapp2.1 D:\Test\Test1\api
CCopy D:\test\Source\MTools\Test.\Source-Promotion\Test.Web\bin\Debug\netcoreapp2.1 D:\Test\Test1\web
CCopy D:\test\Source\MTools\Test.\Source-Promotion\Test.Web\wwwroot D:\Test\Test1\web\wwwroot
CCopy D:\test\Source\MTools\Test.\Source-Promotion\Test.Job.WindowsService\bin\Debug\netcoreapp2.1\win-x64 D:\Test\Test1\job
net start Test1Job
C:\Windows\System32\inetsrv\appcmd.exe start site Test1.test.com
C:\Windows\System32\inetsrv\appcmd.exe start site Test1.api.test.com
C:\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:"test1.test.com"
C:\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:"Test1.api.test.com"
Write-Host "success"
Get-Date
function CCopy($folder_a_path,$folder_b_path)
{
 if(!(test-path $folder_b_path))
 {
 md $folder_b_path
 }
 #遍历源文件夹下所有文件
 $folders_a = gci $folder_a_path -Recurse
 foreach ($folder_a in $folders_a)
 {
 if($folder_a.fullname -like "*appsettings.json*")
 {
 continue
 }
 #通过替换的方式,取目标文件的全路径名称
 $b = $folder_a.fullname.replace($folder_a_path,$folder_b_path) 
 #判断目标文件是否存在,如果存在则先判断新旧
 If (test-path $b)
 {
  #判断目标是否为目录,如果是目录则跳过,如果不跳过,则会创建一级空目录
  If (!((gi $b).PSIsContainer))
  {
  #判断目标文件、源文件的新旧情况,如果目标已存在文件的修改时间早于源文件,则重新拷贝覆盖
  If ((gci $b).lastwritetime -lt $folder_a.lastwritetime)
  {
  copy-item $folder_a.fullname $b -force
  }
  }
 }
 #如果目标文件不存在,则直接拷贝
 Else
 {
  copy-item $folder_a.fullname $b
 }
 }
}

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

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

待续...

总结

以上所述是小编给大家介绍的window下使用Jenkins来做自动化部署的教程图解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • window下homestead开发环境安装详细教程

    window下homestead开发环境安装详细教程

    homestead就是laravel官方打包给我们使用的环境,本文给大家介绍的非常详细,包括资源准备工作都给大家列出来了,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-10-10
  • urlscan.ini中文详解注释

    urlscan.ini中文详解注释

    利用微软官方发布的UrlScan2.5可以杜绝黑客把你的服务器当木马源!我修改了一些参数目前可以正常运行在所有Windows服务器上
    2008-07-07
  • 关于网站应用程序池的帐号密码更改及其影响的实例分析

    关于网站应用程序池的帐号密码更改及其影响的实例分析

    这个标题看起来有点绕,但其实是一个常见的问题,而且很多朋友对此的理解都不深。我这里用一个例子来解释一下
    2011-12-12
  • IIS 各种身份验证详细测试

    IIS 各种身份验证详细测试

    IIS的各种身份验证详细测试
    2008-12-12
  • winserver 2019搭建故障转移集群

    winserver 2019搭建故障转移集群

    群集是一组独立的服务器,它们共同协作以提高应用程序和服务的可用性,本文主要介绍了winserver 2019搭建故障转移集群,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • WIN10安装有多种数据库时如何防止电脑卡慢问题

    WIN10安装有多种数据库时如何防止电脑卡慢问题

    这篇文章主要介绍了WIN10安装有多种数据库时如何防止电脑卡慢问题,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • Win Server 2019远程桌面服务部署的实现步骤

    Win Server 2019远程桌面服务部署的实现步骤

    有时候使用远程桌面连接到WINDOWS服务器,本文主要介绍了Win Server 2019远程桌面服务部署的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • Windows Server 2019远程控制的配置与管理方法

    Windows Server 2019远程控制的配置与管理方法

    在企业中服务器一般被寄存在专门的IDC机房中,服务器需要定期维护,所以这时候就需要远程控制,本文就介绍Windows Server 2019远程控制的配置与管理方法,具有一定的参考价值,感兴趣的可以了解一下
    2022-04-04
  • IIS6架设网站过程常见问题解决方法总结

    IIS6架设网站过程常见问题解决方法总结

    很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,俺忙活了一下午,做了很多次试验,结合以前的排错经验,做出了这个总结,希望能给大家帮上忙。
    2008-09-09
  • IIS服务器禁止某个IP或IP地址范围访问网站的方法

    IIS服务器禁止某个IP或IP地址范围访问网站的方法

    公司网站的最近一直遇到同行的恶意刷下载导致流量暴涨,严重影响正常用户的访问,因此不得不将这些ip地址拉黑了,网站环境是IIS,本文就针对该问题来讲讲IIS服务器禁止某个IP或IP地址范围访问网站的方法
    2024-09-09

最新评论