相信很多朋友都在使用Markdown或者restructuredText格式来编写一些技术文档,也会把这些文档放在github上分享给社区。GitHub提供了很好的Markdown格式解析支持,但是这些文档的阅读体验并不好,而且有些时候我们可能只希望给用户提供可阅读的html格式而不希望直接把Markdown格式也分享出去。

为了满足这些要求,我曾经使用ReadTheDocs的服务很长时间,因为它提供了很漂亮并且适配各种屏幕尺寸和手机的css风格。但是我相信很多人也和我一样,一直都很纠结它的访问速度,毕竟服务器在国外。后来,我在北京的Azure数据中心中自己搭建了ReadTheDocs服务器,但是发现在文档生成和发布过程中ReadTheDoc必须要下载很多依赖库,由于大家都知晓的原因,这让发布过程变的非常不稳定,经常出现发布失败的情况。

最终,我决定自己搭建类似ReadTheDocs的自动化文档发布流水线,实现文档源代码签入后的一键式自动发布。思路很简单,就是利用VSTS所提供的 持续集成CI 引擎,在推送代码后自动触发脚本完成文档编译(把restructuredText/Markdown格式转换为html格式),同时使用FTP上传到web服务器的特定目录,再把html压缩后的zip包上传到vsts作为备份。

最终发布的效果如下:

配置这个流水线也很简单

1. 在VSTS里创建git代码库签入文档源码,并创建文档编译脚本 build.sh

以下是 build.sh 的内容

sphinx-build -b html ./docs/ ./_build/

2. 在Azure上创建Website,并获取ftp上传地址和账户

3. 在VSTS中创建以下文档构建定义

这个构建分成4个步骤完成,分别是

○ 执行 build.sh 脚本
○ FTP 上传到Azure站点
○ 发布文档zip包作为交付件到VSTS中

4. 在VSTS中创建以下github同步构建定义

2个步骤

○ 同步github状态
git pull https://github.com/lean-soft/$(Build.Repository.Name).git master
○ 推送到github
git push https://$(github-token)@github.com/lean-soft/$(Build.Repository.Name).git head:master

注意以上我使用了 ${Build.Repository.Name}替代了代码库的名称,这样我只要在vsts和github上保持代码库名称的一致,就可以不必每次都重新修改这个脚本的内容。

DevOpsHub的文档中心现在已经5套不同内容的培训实验手册文档,为了跟踪所有这些文档的更新状态,我在VSTS里面还建立了一个仪表盘来整体显示。

这些文档通过以上提到的github同步任务,也会同步到公司的github主页上,大家如果需要这些文档的源码,可以访问:https://github.com/lean-soft

DevOpsHub文档中心地址请点击 以下地址

http://docs.devopshub.cn/

更新1,最近我又改进了这个流水线,使用docker来运行sphinx工具,这样我就不必在构建服务器上安装python等一系列的工具了。脚本如下:

# 使用容器运行sphinx工具,并执行自定义的build.sh脚本
docker run -it -v $(Build.Repository.LocalPath):/documents/ --name docs-build-container -w /documents/ --rm docker-sphinx:1 bash ./build.sh

更新2,微软最近发布了基于Linux的托管构建服务器,所以我就不必自己搭建构建服务了,只需要修改构建使用 Hosted Linux就可以了。

在微信中请点击 阅读原文,谢谢。


MarkDown/reST 文档发布流水线的更多相关文章

  1. word文档发布至博客wordpress网站系统

    今天ytkah接到一个需求:将word文档发布到wordpress网站上,因为客户那边习惯用word来编辑文章,想直接将内容导入到wp网站中,其实 Word 已经提供了这样的功能,并且能够保留 Wor ...

  2. Word文档发布到CSDN博客

    目前大部分的博客作者在写博客这件事情上都会遇到以下3个痛点:1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.2.发布到博客或公众号平台 ...

  3. MARKDOWN使用文档

    ISSUE引用 引用当前项目内的ISSUE #1 markdown写法 #1 引用当前命名空间下的其他项目内的ISSUE projectname#1 sofa_ta#1 markdown写法 sofa ...

  4. 开发者福利!百问I.MX6ULL裸机文档发布

    终于等到你,百问科技近600页的100ask_imx6ull裸机文档发布,已经合并到“嵌入式Linux应用开发完全手册第2版_韦东山全系列视频文档全集.pdf(1222页)”,所有人免费下载学习. 本 ...

  5. 如何写Markdown格式文档

    Markdown Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯.它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档.这种语言吸收了很多在电子邮件中 ...

  6. 拯救你的文档 – 【DevOps敏捷开发动手实验】开源文档发布

    今天上海的天气真是不错,风和日丽.再次来到微软上海紫竹研发中心,心情很是愉快,喜欢这里的大草坪,喜欢这里的工程气氛,更喜欢今天来陪我的小伙伴们. 这次动手实验培训与以往最大的不同就是采用了开源文档的方 ...

  7. 使用Markdown写文档

    转载于:http://blog.csdn.net/xiahouzuoxin/article/details/19752603 Markdown是一种网络书写语言,其目标是实现易读易写,且兼容HTML语 ...

  8. 文档发布工具mkdocs

    mkdocs是Python的一个对 Markdown 友好的文档生成器.,小巧精美. MkDocs is a fast, simple and downright gorgeous static si ...

  9. php markdown 接口文档生成工具 SummerDoc

    2017年9月18日 19:20:22 星期一 因工作需要, 用PHP写了一个管理接口文档的小工具, 下边介绍一下: 浏览器展示的效果: 项目地址:(码云) 例子(http://doc.hearu.t ...

随机推荐

  1. bootstrap3-datepicker and jquery.form.js

    bootstrap3-datepicker 和 jquery.form.js 这两个控件又起来都比较简单,就一起介绍了. 先说datepicker. github上的地址是:https://githu ...

  2. ArrayList/List 泛型集合

    List泛型集合 集合是OOP中的一个重要概念,C#中对集合的全面支持更是该语言的精华之一. 为什么要用泛型集合? 在C# 2.0之前,主要可以通过两种方式实现集合: a.使用ArrayList 直接 ...

  3. Objective-C和Swift

    在项目中同时使用Objective-C和Swift 苹果发布的Swift语言可以和之前的Objective-C语言同时存在于一个项目中. 可能有人会认为是同一个类文件中既可以有Objective-C也 ...

  4. javascript 学习总结(九)面向对象编程

    1.面向对象的工厂方法 function createPerson(name, age, job){ var o = new Object(); o.name = name; o.age = age; ...

  5. .NET和JAVA的比较- 体系结构

    .NET体系结构   对于.NET Framework体系结构,参考了"你必须知道的.NET"并”借用“别人的经典体系结构图从宏观上说明一下我的理解. 图1 简单的说下几个名词: ...

  6. JavaScript等比例缩放图片

    js等比例缩放图片,这个功能非常实用,当网页加载一个尺寸比较大的图片时,往往会把一个网页撑的变形,页面变得很难看,于是我们就想到了用JS去控制超出一定范围的图片,以稳定页面布局,本代码段就是完成了此功 ...

  7. Akka入门实例

    Akka入门实例 Akka 是一个用 Scala 编写的库,用于简化编写容错的.高可伸缩性的 Java 和 Scala 的 Actor 模型应用. Actor模型并非什么新鲜事物,它由Carl Hew ...

  8. 完美的拥抱GitHub

    Visual Studio 2012完美的拥抱GitHub   前言 一直以来都想使用Git来管理自己平时积累的小代码,就是除了工作之外的代码了.有时候自己搞个小代码,在公司写了,就要通过U盘或者网盘 ...

  9. C#通过模板导出Word(文字,表格,图片)

    C#通过模板导出Word(文字,表格,图片)   C#导出Word,Excel的方法有很多,这次因为公司的业务需求,需要导出内容丰富(文字,表格,图片)的报告,以前的方法不好使,所以寻找新的导出方法, ...

  10. 旅游[SPFA或是最小生成树][简单算法的灵活题]

    旅行 [问题描述] Z 小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z 小镇附近共有N 个景点(编号为1,2,3,…,N),这些景点被M 条道路连接着,所有道路都是双向的,两个景点之间 ...