阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

利用 AppVeyor 实现 GitHub 托管项目的自动化集成

240次阅读
没有评论

共计 2177 个字符,预计需要花费 6 分钟才能阅读完成。

利用 AppVeyor 实现 GitHub 托管项目的自动化集成

今天拿手头一个 GitHub 项目实验了一下在线的集成服务,前后试用了 TravisCI, CircleCI 和 AppVeyor。由于测试工程内包含了一些使用了 WPF 的 C# 代码,前面两个跑在 Linux/Mono 上不是很友好,而 AppVeyor 的配置非常顺利,与 GitHub 的互操作也没有任何问题,所以完成之后记录一下备忘。

基本流程

首先将 AppVeyor 跟 GitHub 绑定后,就可以点击项目主页上的“+ New Project”添加工程了。

利用 AppVeyor 实现 GitHub 托管项目的自动化集成

添加工程之后,需要到 Settings 里面做一些对应的配置。这里择要说一下吧。


General 一栏中,有一个变量是生成的版本字符串,通常在后面打包时会用到。{build} 是一个自增长的序列号。

利用 AppVeyor 实现 GitHub 托管项目的自动化集成

Environment 一栏中,比较重要的是 Init script 和 Install script 的区别——简单说,前者发生在 git clonegit checkout 前,后者发生在它们之后。

利用 AppVeyor 实现 GitHub 托管项目的自动化集成

如果像测试工程那样在库中包含 submodule,就需要在 Install script 内做 git submodule update(如上图)

Build 一栏中的各种选项应该是不需要解释,程序员都很熟悉了。

Artifacts 一栏中,如果指定的是目录,AppVeyor 会自动打成 zip 包,包名就是 Deployment Name,在这里可以用上前面的版本字符串。

利用 AppVeyor 实现 GitHub 托管项目的自动化集成

接下来是最后也是最重要的一栏 —— Deployment。如果前面的步骤都很顺利,这一步就会把生成并打包好的文件发布出去。由于我的测试项目在 GitHub 上,这里我就选了 GitHub Releases(需要填入 GitHub authentication token)。注意这里需要明确指出待发布的 Artifacts 列表。

这里有一项是 Draft Release(以草稿方式发布)比较有用,发布的内容只有当手动确认后才会公开出现在 GitHub 项目的 Releases 栏内,以免造成误发布。

利用 AppVeyor 实现 GitHub 托管项目的自动化集成

以 draft 方式发布在 GitHub 上后效果如上图。


好了,如果一切顺利的话,至此 AppVeyor 已完成了 从获取代码,编译,打包,部署到 GitHub,并以 GitHub Release 方式发布 的整个流程,还算简单吧。注意,在整个过程中,无需自己手写一句 git, make, msbuild, zip, copy 等各种内部和外部的命令,甚至连 solution file (*.sln) 都不需要手动指定,俺觉得总体上还是非常简洁的。


状态显示(Status Badge)

有了持续集成的服务以后,最自然的想法是给项目加上当前集成状态的标示。有了这个东东,任何查看项目的人都能第一时间获知集成的状态,不良提交造成 build break 的情况就能迅速得到重视和修复。

利用 AppVeyor 实现 GitHub 托管项目的自动化集成

如何添加可以看这个页面。


控制部署的触发

默认情况下 AppVeyor 是每个提交都会编译和部署的,也就是说,如果没有错误,每一次提交最终都会触发一次发布(Release)。而大多数时候我们需要的实际上是“每次提交的时候都编译,但只有指定的版本才触发部署”。读了一下文档,我发现这个需求可以通过 APPVEYOR_REPO_TAG 这个环境变量(仅在 push 了包含 tagged commit 之后为真)来实现。

具体做法如下图所示,在 Deployment 的选项里新增一个部署条件(Add deployment condition)判断一下 APPVEYOR_REPO_TAG,就可以做到只有打 tag 的提交才触发部署了。

利用 AppVeyor 实现 GitHub 托管项目的自动化集成

打完之后测试了一下,这是一个 untagged commit 的行为,嗯,一切正常。

利用 AppVeyor 实现 GitHub 托管项目的自动化集成


最后好奇看了一下针对 public projects 的收费版的价格,每个月 $29.5。不过俺觉得免费版日常已经基本够用了。

GitHub 教程系列文章

通过 GitHub 创建个人技术博客图文详解  http://www.linuxidc.com/Linux/2015-02/114121.htm

GitHub 使用教程图文详解  http://www.linuxidc.com/Linux/2014-09/106230.htm 

Git 标签管理详解 http://www.linuxidc.com/Linux/2014-09/106231.htm 

Git 分支管理详解 http://www.linuxidc.com/Linux/2014-09/106232.htm 

Git 远程仓库详解 http://www.linuxidc.com/Linux/2014-09/106233.htm 

Git 本地仓库(Repository)详解 http://www.linuxidc.com/Linux/2014-09/106234.htm 

Git 服务器搭建与客户端安装  http://www.linuxidc.com/Linux/2014-05/101830.htm 

Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm 

分享实用的 GitHub 使用教程 http://www.linuxidc.com/Linux/2014-04/100556.htm 

GitHub 的详细介绍 :请点这里
GitHub 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-08/120906.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计2177字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中