.NET实现自动编译 – 拖拉机大叔 – 博客园

来源: .NET实现自动编译 – 拖拉机大叔 – 博客园

前言

因每次发布版本的时候,都需要打开vs项目,然后进行编译。如果刚好手里有文件在修改,就需要先签入之类的。所以想找个可以实现自动编译的工具。

在网上查询了不少资料,终于基本上实现了自动编译的功能。因为自动部署涉及到服务器管理,本人也不熟悉,就不讨论了。

 

一、环境准备

1.  我这边使用的是git,也可以用svn之类的其他版本控制器。git服务器用的是gitlab.

2. 下载git windows客户端,在自动编译服务器上安装。

3. 下载TortoiseGit  windows客户端, 安装。

4. 在任意目录上右键,选择Git Bash here, 输入ssh-keygen, 一直默认回车。 之后会在用户目录(c:\user\你的系统用户名\.ssh)下生成2个文件: id_rsa和id_rsa.pub.

5. 打开开始菜单,打开TortioseGit里面的PuTTYGen 。 点击Conversion下的Import Key, 打开之前生成的id_rsa(不带后缀的)。复制输入框中的ssh-rsa那一大串文字到gitlab里面的ssh keys.  点击Save private key, 保存文件为id_rsa.ppk。

6. 下载jenkins安装。需要安装的插件:git plugin, msbuild plugin, credentials binding plugin, Parameterized trigger plugin.

7. 下载nuget.exe.

 

二、编写msbuild

1.  新建一个空解决方案Lake, 里面有Lake.Web这个web项目。

2. 在解决方案根目录增加一个文件: build.msbuild。

msbuild

这里面有几个目录:

$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), common.targets))\release\Lake.Web   这个是表示从当前目录,一直往上找,找到一个common.targets的文件,最终的的发布文件会在这个目录里面的release\Lake.web下。

..\Published\Lake.Web  这个目录表示编译后的输出目录。

3. 签入提交到git.

 

三、配置Jenkins

1.  打开Manager Jenkins/Configure System,  点击Home directory 下的Advanced…,  其中Workspace Root Directory就是以后所有的git repoistory放置的目录。

我这里设置的是: D:\git/${ITEM_FULLNAME} .

然后在这个目录下(d:\git)新建一个空文件: common.targets.

把之前下载的nuget.exe也复制到这里。

2.  Manager Jenkins/ Global Tool Configuration

Git-Path to Git executable, 这个是你的git安装地址: C:\Program Files\Git\bin\git.exe

MSBuild-> MSBuild installations: Name:Dotnet4.0, Path to MSBuild: C:\Program Files (x86)\MSBuild\14.0\Bin\  注: 这个path是看你安装的.net版本.

 

四、发布任务

1.  New Item

Enter an item name, 然后选择Freestyle project.

2. Git

Repositoryies: git@192.168.1.8:.net/Lake.git  (git里面可以查看到)

Credentials: 点击Add, 在key里面输入之前id_rsa.ppk内容。

 

Repository browser: gitlab

version: 6.5

3. Build: Add build step -> Build a Visual Studio project or solution using MSBuild

MSBuild Version: 之前MSBuild输入的Dotnet4.0

MSBuild Build File:  D:\git\Lake\build.msbuild

4. 如果这个任务依赖于别的任务,在此项目之前,必须编译另外一个任务,在Add build step里面选择Trigger/call builds onother projects. 然后输入另外一个Projects的名称。 勾选Block until.

5. 还原Nuget包

Add build step -> Execute Windows batch command.

输入: d:\git\nuget.exe restore “D:\git\Lake\Lake.sln”

6. Post-build Actions

Archive the artifacts(这个主要是为了nuget下载的包,每次编译之前保留)

File to archive: packages/**

7. 如果有时候提示git没有权限,则进入服务,切换Jenkins的运行在为当前用户。

8. Build Now, 可以看到成功还是失败。

9. 所有的编译文件,都在之前build.msbuild里面的release\Lake.web

 

 

五、参考资料

1. 用MSBuild和Jenkins搭建持续集成环境(1)

2. .NET Web Development and Tools Blog

3. Configure NuGet Package Restoration

分享到: 更多 (0)