.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 path\cmd\git.exe
5. 添加对应.NET framework version MSBuild
Name: .NET4.0
Path to MSBuild:
%system%\Microsoft.NET\Framework\v4.0.30319\MSBuild.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\nonsuch)。
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\nonsuch\Build.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, 这个还有很多功能需要去探索。
.NET代码自动编译发布的更多相关文章
- Jenkins搭建.NET自动编译发布本地环境
最近在做一个团队项目的时候,用到了自动编译发布部署环境[也可以说是持续集成],于是顺便学习了下这个环境的搭建过程. 持续集成 持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员 ...
- Jenkins搭建.NET自动编译发布远程环境
继上一篇文章Jenkins搭建.NET自动编译发布本地环境 发布到本地成功后,接下来配置发布到远程环境. Build配置——发布到远程 根据前面VS中发布项目,生成的CustomProfile2 来配 ...
- 为Github仓库添加Github Actions实现持续集成: Android apk自动编译发布以及github pages同步推送coding.net
内容转载自我的博客 目录 说明 1. 编写Android项目的CI配置文件 2. 编写Jekyll项目的CI配置文件 2.1 配置coding.net 2.2 配置github 2.3 自动部署到co ...
- Jenkins搭建windows service自动编译发布环境
类库项目(Task)部署 前面搭建了Web站点的环境,类库项目发布不同于站点项目,它只需要将MSBuild编译出来的dll复制到目标服务器上即可,而不需要通过Web Deploy,下面来说一下如何发布 ...
- gitlab+jenkins+hook代码自动构建发布上线
Gitlab+Jenkins+Hook 1.gitlab和jenkins的安装见: http://www.cnblogs.com/cuishuai/p/7544663.html http://www. ...
- Jenkins介绍和安装及配合GitLab代码自动部署
Jenkins是什么? 基于JAVA的开源的自动化系统平台 加速自动化CI,CD任务及流水线,所有类型的任务:构建,测试,部署等 丰富的插件生态系统支持功能扩展,1400+插件和SCM,测试,通知,报 ...
- idea自动编译
idea修改后台代码自动编译 On 'update' action = Update classes and resources On frame deactivation = Update clas ...
- Ant自动编译打包&发布 android项目
Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了. ...
- Tomcat 设置自动编译,自动发布,自动部署
Tomcat服务器 具有一个常用的功能: 即自动编译,自动发布,自动部署功能. 问题: 当我们第一次发布程序以后,我们增删改Servelt,Java,.xml等文件,都必须重启Tomcat,如果项目巨 ...
随机推荐
- 设计模式C++实现_1_Singleton设计模式(简单的实现)
Singleton设计模式 思路如以下: Single.h #pragma once #include <iostream> #include <string> using n ...
- 《高性能 JavaScript》读书笔记(一)
一. 加载和执行——优化JavaScript规则: 1. 将脚本放在底部:2. 减少页面中外链脚本文件的数量: 比如,下载单个100kb的文件将比下载4个25kb的文件更快.这个可以通过离线打包工具或 ...
- ssh下常用操作汇总(good)
1. 安装git,从程序目录打开 "Git Bash" 2. 键入命令:ssh-keygen -t rsa -C "email@email.com" &q ...
- java 获取系统变量(环境变量和环境变量)
前言 环境变量这个概念不陌生, 就是操作系统的环境变量. 系统变量就是java本身维护的变量. 通过 System.getProperty 的方式获取. 对于不同的操作系统来说. 环境变量的处理可能会 ...
- 分析RAC下一个SPFILE整合的三篇文章的文件更改
大约RAC下一个spfile分析_整理在_2014.4.17 说明:文章来源于网络 第一篇:RAC下SPFILE文件改动 在RAC下spfile位置的改动与单节点环境不全然一致,有些地方须要特别注意, ...
- XEvent – SQL Server Log文件对磁盘的写操作大小是多少
原文:XEvent – SQL Server Log文件对磁盘的写操作大小是多少 本篇是上一篇SQL Server Log文件对磁盘的写操作大小是多少的续,使用XEvent收集SQL Server D ...
- 今天才知道css hack是什么
先来个冷笑话:一晚下班回家,一民警迎面巡逻而来.突然对我大喊:站住! 民警:int类型占几个字节? 我:4个. 民警:你可以走了. 我感到很诧异. 我:为什么问这样的问题? 民警:深夜还在街上走,寒酸 ...
- svnclient本地化和异常处理
svn中国本土化,首次安装client.然后下载语言包的相应版本,然后将语言设置为英文! 我碰到汉化失败的案例:client与语言包版本号不匹配 之前安装的语言包: 下载相应语言包: 假设之前安装了, ...
- 在打包程序中自动安装SQL Server数据库 .
原文:在打包程序中自动安装SQL Server数据库 . 1.创建安装项目“Setup1”安装项目 在“文件”菜单上指向“添加项目”,然后选择“新建项目”. 在“添加新项目”对话框中,选择“项目类型” ...
- Asp.Net MVC5入门学习系列②
原文:Asp.Net MVC5入门学习系列② 添加一个Controller(控制器) 因为我们用的是Asp.Net MVC,MVC最终还是一套框架,所以我们还是需要遵循它才能玩下去,或者说是更好的利用 ...