差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
rf:rf:rfdoc [2013/03/18 15:17] 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) | 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) | ||
行 21: | 行 21: | ||
- 設定檔: 新增對rfdoc的apache設定擋,<code bash>WSGIScriptAlias / /opt/tmp/rfdoc-0.2/src/rfdoc/rfdoc.wsgi</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> | - 修改資料庫存取權限: 目的是要讓apache有rfdoc資料庫存取的權限,<code bash>chown www-data:www-data /tmp/rfdoc.db</code> | ||
- | 由於RFDoc程式碼都是使用Web Root的方式去存取,目前還在尋找可以讓它透過其它URL存取的方式。 | + | 由於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 ===== | ===== 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> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
- | LIBDOC_CMD=./libdoc.sh | + | BASE=`dirname "$0"` |
- | OUTPUT=/opt/portable-robot/doc | + | LIBDOC_CMD=$BAE/libdoc.sh |
- | RFDOC_URL=http://10.134.15.215 | + | OUTPUT=$BASE/doc |
- | RFLIB_FOLDERS=('/opt/robotframework/libs','/opt/robotframework/testcases') | + | RFDOC_URL=http://192.168.1.113 |
+ | RFLIB_FOLDERS=("$BASE/../libs","$BASE/../testcases") | ||
if [ ! -e $OUTPUT ]; then | if [ ! -e $OUTPUT ]; then | ||
行 41: | 行 75: | ||
$LIBDOC_CMD -f XML "$file" "$OUTPUT_FILE" | $LIBDOC_CMD -f XML "$file" "$OUTPUT_FILE" | ||
curl --form file=@$OUTPUT_FILE \ | curl --form file=@$OUTPUT_FILE \ | ||
- | $RFDOC_URL/upload --form override=on | + | --form override=on $RFDOC_URL/upload > /dev/null 2>&1 |
done | done | ||
done | done | ||
</code> | </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~~ |