title author date CreateTime categories
开源项目使用 appveyor 自动构建
lindexi
2019-06-23 11:47:40 +0800
2019-6-18 19:54:7 +0800

我写了几个开源项目,我想要有小伙伴提交的时候自动运行单元测试,自动运行编译,这样可以保证小伙伴提交清真的代码
本文将会告诉大家如何接入 appveyor 自动构建方案,在 Github 上给自己的开源项目进行自动构建

在开源项目可以发现很多都有 appveyor.yml 文件,这个文件就是用来做自动构建的

此时有小伙伴 玩命夜狼 告诉我 “我没写过,但我觉得我能写” 我就吓到了,难道这个文件是需要手写的?我看到 官方文档 发现内容超级多,也就是在开始写之前,我需要学很久?

我可不是一个会学东西的金鱼因为我很快就不记得我看了什么

好在 appveyor 提供了网页配置方案,首先是通过 Github 登陆

在登陆之后点击新建项目

从 Github 上找到自己期望接入的开源项目

在这个页面的右边将会列出你的所有项目,鼠标移动到项目上可以看到 Add 按钮,点击就可以添加

添加完成返回页面,点击对应项目的设置选项,在设置选项里面提供了很多编译的设置,在设置完成之后,可以看到 Export YAML 的标签,在这个标签里面就可以下载 appveyor.yml 文件,也就是说这个配置文件可以不手写,可以在网页上经过配置自动创建

接下来使用我的编码规范工具作为例子告诉大家如何做设置

按照标签提供的方向,一个个进入,第一项是总的配置,一般不需要做更改

第二项是环境,用于配置编译需要的环境,如编译使用的镜像,我默认选择了 VisualStudio 2019 作为镜像。在编译的时候将会通过 Docker 下载 VisualStudio 2019 的镜像,也就是一个 Windows 的系统上包含了 VisualStudio 2019 安装的镜像,将会在这个镜像里面进行编译

在这个环境标签还可以设置编译时的环境变量和 HOST 等

在准备完成了环境,下一步就是 Build 了,在开始选择了自己的项目之后,在自动构建里面将会自动识别这是一个 .NET 的程序,可以使用 msbuild 编译,于是很多预设的配置就已经写好

在 Configuration 上可以配置以什么方式编译,如 DEBUG 还是 RELEASE 编译,在 Platform 上可以选择编译平台,这些选项都支持多选

在 Build 页面最下可以找到编译前执行命令,我使用的是之前版本的 csproj 格式,需要通过 NuGet 命令行还原。此时需要点击添加脚本命令,可以看到提供的脚本有 PowerShell 和 .NET Core 版本的 PowerShell 和 Cmd 等脚本方式,我这里选择使用 Cmd 脚本

在使用的 VisualStudio 2019 镜像已经添加了很多环境变量和安装了很多程序,这里可以直接写 NuGet 而不需要先下载

其他的配置项都是不重要的,小伙伴可以自己去玩一下

在设置完成之后,点击 Export YAML 页面,可以下载刚才的配置,将下载的配置放在自己仓库的根文件夹,然后提交到 Github 上,返回 Current build 页面,可以看到正在编译

自动构建完成是不是需要和小伙伴炫耀一下?在 ci.appveyor.com 提供了好看的图标,可以用来放在项目的首页

点击设置在 Badges 页面将 markdown code 复制放在自己开源项目的首页文档里面,这样就可以看到下图效果

嗯,上图是因为我写了逗比代码,没有编译成功。小伙伴一看这个项目就知道这个项目的作者是不是逗比了,一个编译不通过的项目都敢放在这

还是回到主题,通过自动构建可以在每次提交和修改的时候自动跑一下编译,因为有些小伙伴会在提交的时候忘记添加一些文件,或者依赖自己本地的某些文件才能编译成功,此时提交上去将会编译不通过。在提交的时候自动构建,可以快速告诉开发当前的提交是否会让项目编译不通过,在刚做出逗比代码的时候发现是哪里逗比需要的时间很短,这样会比我随意提交一些代码到仓库,然后其他小伙伴拉代码发现编译不通过时需要找到逗比代码的时间短很多

对于复杂项目需要定制的,还是需要阅读稳定自己写配置。另外 ci.appveyor.com 不仅提供给开源项目的自动构建,还可以购买本地版部署在自己的服务器

本文提到的 玩命夜狼 是在做 The complete WPF tutorial 文档翻译的大佬,这部分文章很适合新手入门

2019-6-23-开源项目使用-appveyor-自动构建的更多相关文章

  1. 开源项目使用 appveyor 自动构建

    我写了几个开源项目,我想要有小伙伴提交的时候自动运行单元测试,自动运行编译,这样可以保证小伙伴提交清真的代码 本文将会告诉大家如何接入 appveyor 自动构建方案,在 Github 上给自己的开源 ...

  2. 米扑科技的开源项目:sitemap-php 自动生成网站地图

    米扑科技旗下的产品,近期正在做SEO网站优化,其中子需求之一是调研实现了网站地图(sitemap.xml) 封装简化了许多功能模块,现在分享出来,源代码可在Github上下载,有简单的示例. Gith ...

  3. 用gulp打包带参数资源做法与asp.net/java项目结合的自动构建方案探讨

    先探讨方案,后续再实现. gulp打包前端教程配置:http://www.cnblogs.com/EasonJim/p/6209951.html 可能存在以下场景: 1.整个服务端采用接口的形式暴露给 ...

  4. GitHub上线Trending功能,帮你轻松找到有潜力的开源项目

    转自:http://www.csdn.net/article/2013-08-14/2816574-Github-Trending-Open-Source-Project Github开源项目 摘要: ...

  5. 开源项目福利-github开源项目免费使用Azure PipeLine

    微软收购Github后,很多人猜想微软可能会砍掉VSTS,然而事实VSTS并没有砍掉,关于Azure Devops的详细信息可以查看 这篇博客,如果想查看原文也可以从链接里提供的原始地址里查看. 今天 ...

  6. 2019年9月Github上最热门的JavaScript开源项目

      2019年9月Github上最热门的JavaScript开源项目 前端开发 前端开发 微信号 qianduan1024 功能介绍 专注于Web前端技术文章分享,包含JavaScript.HTML5 ...

  7. 23个.NET开源项目

    Castle是.NET里走过了三年的开源框架,下载地址如:http://www.castleproject.org/index.html ,当然如果你是从事过JAVA开发并用过spring,hiber ...

  8. 2019年6月份Github上最热门的开源项目排行出炉,一起来看看本月上榜的开源项目

    6月份Github上最热门的开源项目排行出炉,一起来看看本月上榜的开源项目有哪些: 1. the-art-of-command-line https://github.com/jlevy/the-ar ...

  9. Python开源项目Top30

    原文地址:https://www.cnblogs.com/stoker/p/9101825.html No 1:Home-assistant (v0.6+) 基于Python 3的开源家庭自动化平台[ ...

随机推荐

  1. python时间处理,datetime中的strftime/strptime

    python中datetime模块非常好用,提供了日期格式和字符串格式相互转化的函数strftime/strptime 1.由日期格式转化为字符串格式的函数为: datetime.datetime.s ...

  2. Leetcode137. Single Number II只出现一次的数字2

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: 输入: ...

  3. H5C3--媒体查询(向上兼容,向下覆盖),link中引入的ont and only

    一.使用 实例: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  4. CodeChef August Lunchtime 2014 题解

    A题 给一个由a和b两种类型的字符组成的字符串,每次可以从中选取任意长度的回文子序列(不一定连续)并删除.问最少需要几次能将整个字符串为空. 思路:如果本身是个回文串,那么只需要一次,否则需要两次(第 ...

  5. 面试Mysql的几个常见问题

    1.insert时如果数据重复如何用update? ,,) ; 2.一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启, ...

  6. java swing调试时线程显示名字

    一般有一个默认名字 但是具体运行到哪一个线程,需要猜 为了节约时间,提高效率 可以给线程写个中文名(因为默认就是英文,写中文,一眼就能挑出来) 以RTC定时器为例子 final TimerRtc ti ...

  7. jodatime 计算时间差_统计程序运行耗时

    https://blog.csdn.net/De_Moivre/article/details/79775661 记录开始执行的时间 DateTime startDateTime=new DateTi ...

  8. HTML:如何将网页分为上下两个部分

    1.使用table: <table>  <tr>    <td height="80%"><jsp:include page=" ...

  9. BIRT简介

    BIRT(Business Intelligence and Reporting Tools,商业智能和报告工具,曾被安讯公司中国分公司译作百灵)项目是一个开源软件项目,其为富客户端应用和Web应用程 ...

  10. Leetcode34.Find First and Last Position of Element in Sorted Array在排序数组中查找元素的位置

    给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [ ...