This repository has been archived by the owner on Jan 11, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
Architecture
Yukai Huang edited this page Jul 9, 2017
·
5 revisions
orphan branch main repository
+ +
| |
+------+---------+ +------+-------+
| | | master |
+----+-+ +-------+--+ | data-updates |
| data | | gh pages | | production |
+------+ +----------+ +--------------+
. . .
├── ntust.gz ├── app.css ├── README.md
└── ntu.gz ├── app.js ├── app
├── data ├── bin
├── font ├── brunch-config.js
├── images ├── docs
├── index.html ├── package.json
└── vendor.js ├── public
└── support_organizations.txt
ics-scheduler 專案 git branch 圖表
本專案利用 git branch 的方式水平拆分架構,與 TravisCI 服務整合,不同的分支(branch)依照功能分為:
- 開發用(
master
) - 資料儲存用(
gh-pages
、data
) - 標記觸發 build(
production
、data-updates
)
主要在 master 進行開發,這就沒啥好提了
gh-pages
是 GitHub 幫你 hosting 靜態網站的服務,詳情請閱讀 GitHub Pages 網站
data
是用來存放課程資料包的地方,如上圖所示,會放用 gzip 壓縮後的 json 檔
這兩個 branch 都是透過 orphan branch 指令開出來:
git branch --orphan orphan-branch-name
production
顧名思義就是用來觸發上線的 branch。在 master branch 進行開發後,只要把 production branch 合併回去,就會觸發 TravisCI 上面的網站建置,完成後自動 commit 並推到 gh-pages branch 上。
data-updates
是用來自動跑爬蟲任務的。推上 GitHub 會自動觸發 TravisCI 的爬蟲任務,針對超過三天以上的舊資料包,執行爬蟲腳本進行更新。現有的爬蟲腳本都放在 bin
資料夾底下,若有新資料會重新打包 gzip,並 commit 至 data branch 後上傳。
既然 GitHub Pages 有提供託管靜態網站的功能,那每次 API 呼叫需要回傳的 JSON 資料,當然也可以預先建置好。在 production
branch push 後觸發的 build script ,會把課程資料展開到 app/assets/data/校代碼
目錄底下:
.
├── app.js
├── app.scss
├── assets
│ ├── data
│ │ └── ntust
│ │ ├── VE5737701.json
│ │ ├── VE5738701.json
│ │ ├── VE5901301.json
│ │ └── ...
│ ├── font
│ ├── images
│ └── index.html
└── lib
└── utils.js
在經由 brunch 打包後到 public 目錄:
.
├── app.css
├── app.js
├── data
│ └── ntust
│ ├── VE5737701.json
│ ├── VE5738701.json
│ ├── VE5901301.json
│ └── ...
├── font
├── images
├── index.html
└── vendor.js