您的位置:首页 > 其它

最简单的window下使用Jenkins来做自动化部署的教程

2019-05-25 22:40 881 查看

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

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

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

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

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

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
View Code
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将程序发布到其他服务器上,以及发布完成以后,邮件告知结果

待续...

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: