差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

下次修改
前次修改
rf:rf:rfdoc [2013/03/18 00:30]
tony 建立
rf:rf:rfdoc [2023/06/25 09:48] (目前版本)
行 2: 行 2:
 ====== RFDoc ====== ====== RFDoc ======
 ===== Introduction ===== ===== Introduction =====
-[[https://​code.google.com/​p/​rfdoc/​|RFDoc]]是一個讓你可以將所有的Keyowrd ​Documents集中管理的Web應用程式。對於一個Team的開發人員來說,除了透過瀏覽各個Keyword ​Documents外,也可以透過搜尋功能去知道目前專案中有哪些既有的Keyword可以用。+[[https://​code.google.com/​p/​rfdoc/​|RFDoc]]是一個讓你可以將所有的Keyowrd文件集中管理的Web應用程式。對於一個Team的開發人員來說,除了透過瀏覽各個Keyword文件外,也可以透過搜尋功能去知道目前專案中有哪些既有的Keyword可以用。這篇文章除了教你如何安裝使用RFDoc外,還會分享給你自動匯入文件到RFDoc的方式
 ===== Install and Setup ===== ===== Install and Setup =====
 +RFDoc使用[[http://​zh.wikipedia.org/​wiki/​Django|Django]]為Web的Framework並以[[http://​zh.wikipedia.org/​wiki/​SQLite|sqlite3]]為資料庫。我分為兩部分做介紹,一個以Django做為Web Server,一個是以Apache做為Web Server。(官網的教學實在令我覺得OOXX,照著它做8成以上不能work)
 +==== Django Web Server ====
 +Django提供的Web Server目的是為了開發與測試使用,但如果只是拿來跑RFDoc也無妨吧!
 +  - 安裝Djando:​ <code bash>​apt-get install python-django</​code>​
 +  - 下載[[https://​code.google.com/​p/​rfdoc/​downloads/​list|rfdoc]]並解壓縮,我解壓縮至/​usr/​src/​rfdoc-0.2。
 +  - 建置與安裝:​ 至安裝目錄下執行以下指令,會產生src的資料夾,<​code bash>​python setup.py install</​code>​
 +  - 設置DB: <code bash>​python src/​rfdoc/​manage.py syncdb</​code>​
 +  - 啟動: 可根據需求決定要使用的port, <code bash>​python src/​rfdoc/​manage.py runserver 0.0.0.0:​8000</​code>​
 +如果要重新初始化RFDoc使用的database,可以執行<​code bash>​python src/​rfdoc/​manage.py reset rfdocapp</​code>​
 +==== Apache Web Server ====
 +它是透過[[http://​baike.baidu.com/​view/​1660037.htm|WSGI]]的interface讓Apache Web Server去存取RFDoc。除了要安裝Django的部分,還要做以下安裝:​
 +  - 安裝apache:​ <code bash>​sudo apt-get install apache2</​code>​
 +  - 安裝wsgi模組:​ <code bash>​sudo apt-get install libapache2-mod-wsgi</​code>​
 +  - 產生wsgi檔:​ 直接使用Template,<​code bash>cp /​usr/​src/​rfdoc-0.2/​src/​rfdoc/​rfdoc.wsgi.tmpl /​usr/​src/​rfdoc-0.2/​src/​rfdoc/​rfdoc.wsgi</​code>​加入src/​rfdoc的路徑到PATHS中,<​code bash>​PATHS = ['/​usr/​src/​rfdoc-0.2/​src/​rfdoc'​]
 +</​code>​
 +  - 設定檔: 新增對rfdoc的apache設定擋,<​code bash>​WSGIScriptAlias / /​opt/​tmp/​rfdoc-0.2/​src/​rfdoc/​rfdoc.wsgi</​code>​
 +  - 修改資料庫存取權限:​ 目的是要讓apache有rfdoc資料庫存取的權限,<​code bash>​chown www-data:​www-data /​tmp/​rfdoc.db</​code>​
 +由於RFDoc程式碼都是使用Web Root的方式去存取,目前還在尋找可以讓它透過其它URL存取的方式。(主因是它網頁的寫法都會存取URL的Root)
 +===== How to use? =====
 +它UI設計非常簡單,底下是我匯入Keyword文件後的Screenshot:​\\
 +{{:​rf:​rf:​rf_rfdoc.png?​600|}}
 +  * 右上角的Upload:​ 提供讓你上傳文件的功能。上傳的文件是透過Robot提供的libdoc工具所產生,必須為xml格式,可以參考先前提過[[rf:​rf:​gendoc|產生文件的方法]]。
 +  * Search Keywords區塊:​ 提供你搜尋這些文件的功能。假如你不知道Team Members是否做了某個Keyword,不妨輸入些關鍵字試試看。如果它命名成K1、K2、K3,就去找你的Team membe吧。
 +  * Libraries區塊:​ 列出系統中現有的文件,可以直接參考[[https://​code.google.com/​p/​rfdoc/​wiki/​Screenshots|官網Screenshot]]。
 +如果你想把Robot Builtin的Library也匯進去,就必須要下載它的source code,由source code去產生。
 +===== Automatic Gen&​Upload =====
 +當每次改完Robot後,就要手動去產生文件並上傳至RFDoc。如果只有改一兩個檔案還好,如果一次改很多且又在不同的資料夾呢?​ 我光第一次要匯入10來個檔案就懶了,索性寫一個script替我解決問題。主要有兩個需要知道的:​
 +  - 如何產生xml的Keyword文件?​
 +  - 如何透過script上傳至RFDoc?​
 +==== 產生XML的Document ====
 +先前介紹過[[rf:​rf:​gendoc|產生Robot文件的方法]]了。主要是透過-f XML的參數:​
 +<code bash>
 +libdoc.sh -f XML example.html example.xml
 +</​code>​
 +這個範例就是將library檔案example.html匯入為文件檔案example.xml。
 +==== 上傳至RFDoc ====
 +透過Linux的[[http://​zh.wikipedia.org/​wiki/​CURL|CURL]]工具讓我可以透過script上傳文件:​
 +<code bash>
 +OUTPUT_FILE=/​tmp/​rf_doc/​example.xml
 +RFDOC_URL=http://​192.168.1.113
 +curl --form file=@$OUTPUT_FILE \
 +           ​--form override=on $RFDOC_URL/​upload ​ > /dev/null 2>&1
 +</​code>​
 +主要有兩個重要的參數:​ file為上傳檔案的本機路徑,override為是否要覆蓋資料。
 +==== 摻在一起做懶懶腳本 ====
 +我的需求就是能夠將多個資料夾中的Robot Libraries檔案變成文件,並上傳至RFDoc。所以,
 +  - 透過變數RFLIB_FOLDERS記錄我有哪些資料夾放著這些Libraries,以逗號(,​)分開。
 +  - 設置IFS為逗號(,​),Loop變數RFLIB_FOLDERS。
 +  - 取得各個資料夾中html結尾的檔案。
 +  - 取得檔案名稱並執行libdoc匯出同名的xml文件。
 +  - 最後透過curl上傳至RFDoc。
 +script如下:​
 +<code bash>
 +#!/bin/bash
 +BASE=`dirname "​$0"​`
 +LIBDOC_CMD=$BAE/​libdoc.sh
 +OUTPUT=$BASE/​doc
 +RFDOC_URL=http://​192.168.1.113
 +RFLIB_FOLDERS=("​$BASE/​../​libs","​$BASE/​../​testcases"​)
  
 +if [ ! -e $OUTPUT ]; then
 +        mkdir $OUTPUT
 +fi
  
 +IFS=$','​
 +for folder in ${RFLIB_FOLDERS[@]};​ do
 +        for file in $folder/​*.html;​ do
 +                filename=`basename "​$file"​ | cut -d'​.'​ -f1`
 +                OUTPUT_FILE=$OUTPUT/​$filename.xml
 +                $LIBDOC_CMD -f XML "​$file"​ "​$OUTPUT_FILE"​
 +                curl --form file=@$OUTPUT_FILE \
 +                        --form override=on $RFDOC_URL/​upload > /dev/null 2>&1
 +        done
  
 +done
 +</​code>​
 +最後就是將這些東西放入build script中。當你commmit code後,持續整合系統就會替你搞定這些事情啦! 你再也不用手動去做這些事情了!
 +\\
 +\\
 +友藏內心獨白:​ 懶惰也是能夠造成工作效率的提升。
 ===== Reference ===== ===== Reference =====
   * [[https://​code.google.com/​p/​rfdoc/​|RFDoc Web Site]]   * [[https://​code.google.com/​p/​rfdoc/​|RFDoc Web Site]]
 +===== History =====
 +  * 2013-09-10 在更換新版本robot後,RFDoc發生DB Table找不到的問題。主要原因猜測不能使用舊版本的robot jar檔去產生document,在更新產生document用的robotframework jar檔後,執行src/​rfdoc/​manage.py syncdb去清空資料庫。
 +=====    =====
 +----
 +\\
 +~~DISQUS~~