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. nodejs+express 初学(三)

    Nodejs 的模块,nodejs中每一个js文件都是独立的,不用担心他们中的变量会相互覆盖 模块是 Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之,一个Node.js 文件就 ...

  2. mac下更改MySQL的默认编码

    mysql默认的编码是latin1,它不支持中文,所以我们一般需要修改他的默认编码格式. 打开终端1. 进入root权限sudo -i 2. cp /usr/local/mysql/support-f ...

  3. 原生js增加,移除类名

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. [转]深入理解ajax系列——头部消息

    每个HTTP请求和响应都会带有相应的头部信息,其中有的对开发人员有用.XHR对象提供了操作头部信息的方法.本文将详细介绍HTTP的头部信息 默认信息 默认情况下,在发送XHR请求的同时,还会发送下列头 ...

  5. 20190819 [ B ]-沫

    这次考试很懵,于是我记录了考试过程. 这是B场,比较简单,A场比赛题解请去 下面直接展开=.= 考试过程: 先看三道题, T1,我一下就想到了内个等比数列.于是慌了,我当时是水果的. T2,没思路 T ...

  6. hdu 1059 Dividing(多重背包优化)

    Dividing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  7. 零开始Android逆向教程(一)——初探Android逆向

    这段时间因为某些业务驱动,开始研究一些逆向相关的东西,浏览了下其所包含的大致内容,发现真是一个新大陆,跟之前耳听目染过的一些门面介绍完全不是一个层级的,真正的印证了下手难这一说法.   谨此以本文开始 ...

  8. memcache缓存使用详解

    初始化一个Memcache的对象:$mem = new Memcache(); 连接到我们的Memcache服务器端,第一个参数是服务器的IP地址,也可以是主机名,第二个参数是Memcache的开放的 ...

  9. mysql_example

    package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysq ...

  10. Java Servlet实现下载文件

    一.配置servlet 在WebContent(以前的eclipse版本是WebRoot)文件夹下,有一个web.xml 修改web.xml ,加入以下代码 <servlet> <s ...