MarkDown/reST 文件釋出流水線

北京的201個藍天發表於2017-01-11

相信很多朋友都在使用Markdown或者restructuredText格式來編寫一些技術文件,也會把這些文件放在github上分享給社群。GitHub提供了很好的Markdown格式解析支援,但是這些文件的閱讀體驗並不好,而且有些時候我們可能只希望給使用者提供可閱讀的html格式而不希望直接把Markdown格式也分享出去。

為了滿足這些要求,我曾經使用ReadTheDocs的服務很長時間,因為它提供了很漂亮並且適配各種螢幕尺寸和手機的css風格。但是我相信很多人也和我一樣,一直都很糾結它的訪問速度,畢竟伺服器在國外。後來,我在北京的Azure資料中心中自己搭建了ReadTheDocs伺服器,但是發現在文件生成和釋出過程中ReadTheDoc必須要下載很多依賴庫,由於大家都知曉的原因,這讓釋出過程變的非常不穩定,經常出現釋出失敗的情況。

最終,我決定自己搭建類似ReadTheDocs的自動化文件釋出流水線,實現文件原始碼簽入後的一鍵式自動釋出。思路很簡單,就是利用VSTS所提供的 持續整合CI 引擎,在推送程式碼後自動觸發指令碼完成文件編譯(把restructuredText/Markdown格式轉換為html格式),同時使用FTP上傳到web伺服器的特定目錄,再把html壓縮後的zip包上傳到vsts作為備份。

最終釋出的效果如下:

docs-ci-1

配置這個流水線也很簡單

1. 在VSTS裡建立git程式碼庫簽入文件原始碼,並建立文件編譯指令碼 build.sh

docs-ci-2

以下是 build.sh 的內容

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

2. 在Azure上建立Website,並獲取ftp上傳地址和賬戶

docs-ci-3

3. 在VSTS中建立以下文件構建定義

docs-ci-4

這個構建分成4個步驟完成,分別是

○ 執行 build.sh 指令碼
○ FTP 上傳到Azure站點
○ 釋出文件zip包作為交付件到VSTS中

4. 在VSTS中建立以下github同步構建定義

docs-ci-5

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裡面還建立了一個儀表盤來整體顯示。

docs-ci-6

這些文件通過以上提到的github同步任務,也會同步到公司的github主頁上,大家如果需要這些文件的原始碼,可以訪問:https://github.com/lean-soft

docs-ci-7

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就可以了。

docs-ci-8

在微信中請點選 閱讀原文,謝謝。


 

 

相關文章