当前位置: > 其它学习 > Jenkins >

Jenkins部署使用文档(.Net,Vue项目)

时间:2019-11-06 16:39来源:linux.it.net.cn 作者:IT
目录
 
本文要实现的功能:
 
工具介绍:
 
开始安装:
 
jenkins配置:
 
团队使用:
 
其他问题:
 
关于自己: 
 
 
 
本文要实现的功能:
在本地编写代码,编译通过后提交到Github/SVN.
服务器的Jenkins检测到有代码提交到Github,自动或者手动编译,生成发布版本的代码。
然后Jenkins调用FTP工具(或者一个批处理命令)将发布版本的代码传到IIS网站的目录下。
实现提交代码后,一键编译,直接访问。
工具介绍:
jenkins:Java平台一种持续集成工具,可以实现自动化的发布,当然.net平台也有,但还没了解。实质就是它可以用配置的方式自动调用很多程序,实现自动化。
MSBuild:.net 平台的编译工具,我们用vs编译项目时,其实vs内部也是调用的MSBuild.
Git/:代码管理工具
nuget:用于还原项目所引用的nuget包
node.js 编译vue
webpack vue项目打包
开始安装:
既然jenkins是自动执行某些工具来实现我们的功能,那我们就先把所有步骤手动执行一次,如果没有问题,那么配置到jenkins上肯定也没有问题。以下工具都是在服务器上安装,我用的是虚拟机,win server 2008r2
 
安装IIS, 小伙,如果你连IIS都不会安装,就先别学jenkins了。^^
安装.net framework4.6 在线安装:http://download.microsoft.com/download/1/4/A/14A6C422-0D3C-4811-A31F-5EF91A83C368/NDP46-KB3045560-Web.exe ,如果如果安装过,或有其他版本,建议卸载。
安装TargetingPack .NET Framework 4.6 Targeting Pack是一个程序包,使开发人员能够使用Visual Studio 2013,Visual Studio 2012或第三方IDE构建面向.NET Framework 4.6的应用程序。 官网下载:https://www.microsoft.com/en-us/download/details.aspx?id=48136
nuget.exe 官网下载:https://www.nuget.org/downloads
安装git 官网下载:https://git-scm.com/downloads
jenkins 官网下载:https://jenkins.io/zh/
将测试项目源代码(也可以从github中拉取到本地)test放到C:\inetpub\wwwroot目录,执行完下面的命令后会把项目需要的包都还原。
 
在cmd中输入 :
 
 
 
C:\Progra~2\NuGet\nuget.exe restore C:\inetpub\wwwroot\test\myobj.sln
显示下面这样,证明nuget是没问题的:
 
 
 
 
 
 
 
接下来是安装msbuild,直接在我电脑的vs安装目录下找到MSBuild文件夹,考到服务器中。(C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional)
 
测试MSBuild是否可用:
 
C:\progra~2\MSBuild\15.0\Bin\MSBuild.exe /t:Build /p:Configuration=Release /p:WebProjectOutputDir=C:\inetpub\wwwroot\test\myweb\bin\v1 /p:OutputPath=C:\inetpub\wwwroot\test\myweb\bin\v1\bin  C:\inetpub\wwwroot\test\myobj.sln
显示下面是可以用:
 
 
 
编译后v1文件夹中就出现发布后的文件:(可以把它配置到IIS上,看看编译后的程序能不能跑起来)
 
 
 
以上的步骤就是,编写代码》提交代码》将代码拉取到服务器》编译》发布,所有步骤我们都手动完成了,接下来就是用jenkins把这些步骤自动完成。
 
下面是后来写的blog,公司没用git ,代码管理用的svn。
 
jenkins配置:
 
 
下面的构建我全都用的windows batch 命令,所以不用安装插件,如果你安装了msbuild的插件,在“Global Tool Configuration”配置路径即可,我用命令程序路径什么的我是直接写到了脚本中。
 
新建项目:
 
 
 
点击确定后进入到项目的配置页面:
 
 
 
后台构建:构建>增加构建步骤>Execute Windows batch command(构建步骤是有顺序的,可以拖动排序)
 
 
 
//构建步骤1:用nuget还原包引用
D:\Progra~1\NuGet\nuget.exe restore D:\progra~1\Jenkins\workspace\Imanager\test\OES.sln
//构建步骤2:使用MSBuild编译程序, WebProjectOutputDir是输出文件夹,progra~1是路径简写,因为命令中单词不可以有空格
d:/progra~1/micros~1\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe /t:Build /p:Configuration=Release /p:WebProjectOutputDir=C:\v1 /p:OutputPath=C:\v1\bin  D:\progra~1\Jenkins\workspace\Imanager\test\OES.sln
前台构建:在jenkins里要建三个构建步骤,"Execute Windows batch command",分开执行
 
//构建步骤3:进入到vue项目目录,还原包
cd D:\progra~1\Jenkins\workspace\Imanager\test\OES.Admin\ImanagerHtml
npm install
//构建步骤4:执行编译
cd D:\progra~1\Jenkins\workspace\Imanager\test\OES.Admin\ImanagerHtml
npm run build
//构建步骤5:进入vue根目录,把编译生成的dist文件夹内容全部复制到c:\v1\html 中,参数"/e"表示:复制目录和子目录,包括空的,"/y"表示:禁止提示以确认改写一个现存目标文件
cd D:\progra~1\Jenkins\workspace\Imanager\test\OES.Admin\ImanagerHtml 
xcopy dist c:\v1\html /e /y
构建步骤2 和 构建步骤5 相当于编译后发布到了同台服务器,如果web服务器和 jenkins不在一台机器上,可用powershell远程拷贝
 
$remoteDirPath="\\DESKTOP-9KAK340\remote"
    Write-Host '连接远程主机...'
    net use $remoteDirPath  "zzl" /user:"lind"
    Write-Host '递归拷贝文件(强制覆盖模式)...'
    
    $files = Get-ChildItem -Path "C:\Jenkins_Publish " # 获取本地目录下的文件
    foreach($file in $files) {
        Copy-Item -Path $file.FullName -Destination $remoteDirPath -Include "*" -Exclude "" -Recurse -Force
    }
    Write-Host '目录拷贝完成!'
团队使用:
在服务器部署完本地可用http://localhost:8080,如果公司网络没有限制的话 http://外网地址:8080 也可以访问
 
在Jenkins主界面,“Manage Jenkins”》“Configure Global Security”
 
 
 
管理员增加其他成员:在Jenkins主界面,“Manage Jenkins”》Manage Users,同样,增加成员后要在安全矩阵中分配权限
 
 
 
优化问题:构建前端项目时,我是写到一个"Execute Windows batch command"的,但是不知道为什么执行完npm install,后面的代码就没有执行,所有就像上面写的,单独执行是没问题的。
 
cd D:\progra~1\Jenkins\workspace\Imanager\test\OES.Admin\ImanagerHtml
npm install
npm run build
xcopy dist c:\v1\html /e /y
其他问题:
在服务器端build前端vue项目时,服务器环境的Node.js环境要和本地开发环境一样,即相同的node版本,webpback版本也要一致。
 
vm中我用的winserver2008r2 只有桥接模式才能联网,不知道为什么。
手动在命令行里执行命令时要以管理员模式运行,之前代码放到了C盘,在编译时生成新文件会提示没有权限无法写入。
现在用的vs是2017,.net framework版本4.6.1,把vs安装目录的 D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild 复制到服务器中编译时总是不通过,原因:可能是vs版本问题,在编译时要用到D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE 里面的东西,所以要把MSBuild和同级的Common7也复制到服务器中。(更粗暴的方式:直接在服务器安装和开发环境一样的Visual Studio)

在使用的有个需求是:每次构建时想屏蔽web.config,文件,就是即使web.config提交了,构建时也不会发布,解决方案:
 
msbuild时先发布到临时文件夹,再用xcopy将临时文件赋值到iis对应的目录,这里要用一个参数exclude 来屏蔽特定文件。
 
将需要屏蔽的文件放到exclude.txt中即可
 
xcopy d:\webs\IFuture\temp d:\webs\IFuture /s/e/y/exclude:c:\Enterprise\exclude.txt
 
 

 

(责任编辑:IT)
------分隔线----------------------------