Skip to content
This repository has been archived by the owner on Jan 11, 2023. It is now read-only.

Architecture

Yukai Huang edited this page Jul 9, 2017 · 5 revisions

Git branch 架構

      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-pagesdata)
  • 標記觸發 build(productiondata-updates)

開發用

主要在 master 進行開發,這就沒啥好提了

資料儲存

gh-pages 是 GitHub 幫你 hosting 靜態網站的服務,詳情請閱讀 GitHub Pages 網站

data 是用來存放課程資料包的地方,如上圖所示,會放用 gzip 壓縮後的 json 檔

這兩個 branch 都是透過 orphan branch 指令開出來:

git branch --orphan orphan-branch-name

標記觸發 build

production 顧名思義就是用來觸發上線的 branch。在 master branch 進行開發後,只要把 production branch 合併回去,就會觸發 TravisCI 上面的網站建置,完成後自動 commit 並推到 gh-pages branch 上。

data-updates 是用來自動跑爬蟲任務的。推上 GitHub 會自動觸發 TravisCI 的爬蟲任務,針對超過三天以上的舊資料包,執行爬蟲腳本進行更新。現有的爬蟲腳本都放在 bin 資料夾底下,若有新資料會重新打包 gzip,並 commit 至 data branch 後上傳。

Serving Static JSON API

既然 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
Clone this wiki locally