• .NET代码自动编译发布


    .NET代码自动编译发布

     

     因本人一直使用.NET开发,在做项目的时候,每次都要涉及到各个环境的部署问题,手工操作容易出错,并且重复劳动多,所以一直在寻找一个能实现自动化部署的方案。

    废话不多讲,先讲讲我的初步实现方案。

    准备工具:GIT版本控制(gitlab),Jenkins, msbuild

    1.      安装git版本控制器,提交代码。(svn好像也可以), 并生成ssh public key上传到gitlab的ssh key中(个人配置/SSH KEY)。

    2.      安装jenkins开源工具。

    3.      Jenkins安装git plugin, Msbuild插件(Manager Jenkins/Manage Plugins)

    4.      配置Jenkins中的git(Manager Jenkins/Configure System)

    在git栏中输入name和Path: git install pathcmdgit.exe

    5.      添加对应.NET framework version MSBuild

    Name: .NET4.0
    Path to MSBuild:
    %system%Microsoft.NETFrameworkv4.0.30319MSBuild.exe

    6.      建立.NET项目文件,并添加MSBuild文件

    建立一个解决方案nonsuch.sln,里面包含一个website: nonesuch.web.

    在解决方案根目录建立一个xml文件,改名为: build.targets

     Build.targets

    7.      新建一个任务: Build a free-style software project

    1)     Advanced Project options: Use custom workspace

    输入此任务的文件夹,获取的git项目文件,将放入此文件夹中(d:Git onsuch)。

    2)     Source code Management: Git

    Repositories Url: 输入项目的Git地址,如:

    git@gitlab.gofund.com:dotnet/nonsuch.git

    Repository browser: gitlab

    Url: gitlab的url地址,比如: http://gitlab.gofund.com.cn/dotnet/nonsuch

    Version: 6.2

    3)     Build

    Build a Visual Studio Project or solution using MSBuild

    MSBuild Version: .NET 4.0(之前配置的MSBuild版本)

    MSBuild Build File: 这个地址就是之前配置的workspace路径:

           d:Git onsuchBuild.targets

    4)     Post-build Actions

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

    File to archive : packages/**

    5)     点击Save保存,之后点击:Build Now

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

    9.      为了解决一些引用依赖路径问题,我用在msbuild中用了GetDirectoryNameOfFileAbove这个关键字,有兴趣的可以搜索下。

    10.   这样就通过Jenkins工具,调用git版本控制器,自动获取最新版本代码,发布到某个文件夹,然后IIS可以指向到发布的文件夹。但这样涉及到web.config配置,如果希望不同环境的web.config配置不一样,可以利用debug, release生成的web.config文件,甚至可以把配置放入到统一个数据库中,根据机器的名字自动获取对应环境。

    这是我的实现,不知道有没有更好的解决方案。主要是利用msbuild, 这个还有很多功能需要去探索。

     
     
    分类: ASP.NETC#
  • 相关阅读:
    Modelsim中观测代码覆盖率
    Allegro中Thermal relief Pad 和Anti Pad
    时序逻辑中阻塞赋值引起的仿真问题
    如何提高FPGA工作频率(转载)
    `include在Verilog中的应用
    forever
    wxpython 应用 使用 google gauth 认证
    sql to sqlalchemy 转换
    django 简易博客开发 5 markdown支持、代码高亮、gravatar头像服务
    simpletodo: 一个简易的 todo 程序 django版
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3619912.html
Copyright © 2020-2023  润新知