云端持续集成——AppVeyor拥抱GitHub
想着你正在做一个网站
终于大功告成了,提交了代码后,你按下了开发环境的Build菜单,一杯咖啡后,Build Succeed,然后连接服务器,开始部署
当你乐滋滋的享受着你的开发成果时,突然发现了一个bug!于是你再次修改代码,build,部署
发现bug … 修改 … build … 部署…
发现bug … 修改 … build … 部署…
…
No! 真是够了,好烦
云端的持续集成

如上图所示,引入持续集成后,一切都变得方便了,当开发人员向源代码控制服务器提交了新的代码后,就会触发持续集成服务器的Build操作,Build完成后,还会执行测试,测试通过以后,根据配置的不同,可以手动或自动部署到生产环境
这一切都是自动的,对于开发人员来说,只需要把代码提交到Source Control就可以了,非常方便
随着SaaS的兴起,AppVeyor把持续集成搬到了云端,我们无需架设自己的CI服务器,只需注册一个账号,然后把GitHub, BitBucket或者TFS 连上AppVeyor就可以了
AppVeyor与GitHub的集成
本文以GitHub为例,介绍AppVeyor与源代码控制服务器的集成
首先你要在GitHub有一个项目

以一个ASP.NET项目为例子吧,一个MVC项目,带有一个单元测试,登录AppVeyor后,点击【New Project】

选择项目,点击【ADD】,这样就可以把项目和AppVeyor关联了起来
直接点击右边的【New Build】就可以Build了
在Build之前,我们可以做一些配置

在【SETTINGS】里面有一个版本号,这个版本号是唯一的,用来标识build的,但不会成为生成的程序集的版本号,如果你想让它成为程序集的版本号也是可以的,

在页面下面,把这个打开就可以了

在Build选项卡我们可以设置build的方式,是msbuild,还是脚本,还有配置(Debug, Release)和平台 (x64, x86, Any CPU)

还可以让他在Build成功后生成Web Deploy Package 或是Nuget Package

针对不同项目的build需求,可以选择不同的操作系统环境

如果需要数据库或是其他软件,也可以添加

还可以改hosts文件哦
当一切配置好后,我们按下Build
经过一两分钟的排队等待后,build正式开始

可以实时查看Build的状态

Build完成后,发现并运行单元测试,oops... Fail 了一个

我们在Test选项卡可以很直观的看到结果,好了别看了,我们去修bug

还有邮件通知。。。

修好后Commit,AppVeyor就会检测到GitHub的代码更改,然后自动进行build和test



这次的测试通过了,由于我勾选了生成Web Deploy Package,这里会有一个部署包,可以下载然后拿去部署
AppVeyor与生产环境的对接
如果要把部署包下载下来部署,那么还有什么方便可言呢?
我们可以直接通过AppVeyor把程序部署到生产环境,这里我们以Azure Website(中国版= =)为例

到azure 的管理页面下载他的publish settings ,用文本编辑器打开,

然后在AppVeyor 的 environments里面新建一个部署环境
按照publish setting的信息填写

需要注意的是,在server里面的填写需要改成这样的格式

本例中是 https://appveyordemo.scm.chinacloudsites.cn:443/msdeploy.axd?site=appveyordemo
创建好环境以后,只需点击Deploy 选择一个build,然后就可以了


部署成功后,我们就可以看到我们的网站了
更多AppVeyor的功能,等着各位朋友去探索!
云端持续集成——AppVeyor拥抱GitHub的更多相关文章
- python+selenium自动化软件测试(第11章):持续集成jenkins和GitHub的使用
11.1 jenkins持续集成环境 相关安装包下载链接:http://pan.baidu.com/s/1qYhmlg4 密码:dcw2赠送jenkins集成selenium环境视频链接http:// ...
- 持续集成~Jenkins构建GitHub项目的实现
有了前两讲的基础,这回我们就可以把github上的项目做到CI(jenkins)里了,让它自动去集成部署,持续集成~Jenkins里的NuGet和MSBuild插件,持续集成~Jenkins里的pow ...
- Jenkins持续集成学习-Windows环境进行.Net开发4
目录 Jenkins持续集成学习-Windows环境进行.Net开发4 目录 前言 目标 Github持续集成 提交代码到Github 从Github更新代码 git上显示构建状态 自动触发构建 Gi ...
- 拥抱自动化,CODING 2.0 持续集成全新上线
在文章开始前,做一个小调查,在您的软件项目中集成一行新代码平均需要花多长时间? 15 分钟 一小时 半天 一天及以上 注意这里的集成是指将源码放在一起,并验证源码可以作为一个一致.运行可靠的软件的过程 ...
- 在Redhat上为.Net 项目构建基于Jenkins + Github + Mono 的持续集成环境
在Redhat enterprise 6.5 的服务器上,为在gutub 上的 .net 项目构建一个持续集成环境,用到了Jenkins和mono.因公司的服务器在内网,访问外网时要通过代理,所以在很 ...
- flow.ci + Github + Slack 一步步搭建 Python 自动化持续集成
理想的程序员必须懒惰,永远追随自动化法则.Automating shapes smarter future. 在一个 Python 项目的开发过程中可能会做的事情:编译.手动或自动化测试.部署环境配置 ...
- github Travis CI 持续集成
一个项目如何保证代码质量是开发中非常重要的环节,对于开源项目来说更是如此,因为开源项目要面对的是来自不同水平开发者提交的代码.所以围绕开源做持续集成(Continuous Integration)变得 ...
- 构建基于Jenkins + Github的持续集成环境
搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路.持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集 ...
- Net 项目构建基于Jenkins + Github + Mono 的持续集成环境
Net 项目构建基于Jenkins + Github + Mono 的持续集成环境 阅读目录 1 安装 2 配置 3 测试 在Redhat enterprise 6.5 的服务器上,为在gutub 上 ...
随机推荐
- JSTL和EL的区别
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的.JSTL只能运行在支持JSP1.2 ...
- hibernate学习(设计一对一 关系 映射)
//主表 package org.crazy.app.domain; import javax.persistence.*; @Entity @Table(name="person_inf& ...
- 浅析Android中ndk-build支持的参数
在解决Android Studio中编译native code出现的问题时,发现Android Studio使用了完整的ndk-build命令进行编译,参数众多.故在此做一个说明,以便大家可以根据偏好 ...
- OneNote的配置
-------siwuxie095 1.点击 "文件" 2.点击 "发送"->"发送至博客" 3.配置博客园的连接 (1)选择博客提供 ...
- 编辑器sublime text3 破解码
第一段亲测有效 —– BEGIN LICENSE —–Ryan ClarkSingle User LicenseEA7E-8124792158A7DE B690A7A3 8EC04710 006A5E ...
- VedioCaptureHelper
void testFun() { chStringA strDevName; chStringA strDevID; chStringA useDevName = "WIN2 USB2.0 ...
- Convert HTML Entities
function convert(str) { // :) //return str; var HTML_Entities = { '&':'&', '<':'<', '& ...
- SQL删除重复数据
--首先将不是重复的数据提取出来,保存到一个临时表中 select distinct * into #temp from JX_Score --然后删除原来的表 delete from JX_Scor ...
- Mysql基础1
一.数据库简介1.Structured Query Language (结构化查询语言)2.SQL:工业标准.(各个数据库厂商都支持)SQL-Server:对标准进行了扩展.TSQL 方言Oracle ...
- null 与 string.IsNullOrEmpty 区别
!= null 就是不为null!string.IsNullOrEmpty 不是null且不是""(string.Empty) -----------Response: != n ...