請注意: http://fossil.kmol.info 僅支援 IPv6 網路協定.
2021 年起的工作流程已經逐步確立, 其中為了因應 G Suite for Education 改名為 Google Workspace for Education 後, 免費的 GDrive 已經不再提供 unlimited 使用, 因此 @gm 上的儲存空間將只提供當學期所使用的下載服務.
其實在網際網路上, 本來就沒有免費使用的服務, 差別只在於連線上網過程所使用的各種資源, 到底是誰在付出代價?
2018 年起 KMOLab 所開設的課程已經全面使用 CMSiMDE 建立動態與靜態網站, 其中的動態網站主要用於近端或網際的網站內容編輯, 而靜態網站則使用 Github, Gitlab, Heroku 與 Fossil SCM 進行同步伺服, 意即每一個與 KMOLab 有關的課程內容資料, 遠端可以有四個同步備份, 而近端則是工作目錄所在電腦, 則可以具有與遠端版本相同或相近的多個分散式備分內容.
雲端的同步資料中只有 Heroku 可以執行 Python, 但能夠免費使用的總容量限制在 500 MB 以內, 因此大多僅用於 Python 網際程式開發測試或跳板之用.
至於 Github 與 Gitlab 的競爭其實已經告一段落, 等塵埃落定, 勝出的一方將會與 Google 蹲點 10 年的 GDrive 商品一樣 (2012-2022), 不再提供用來打擊對手的優渥免費教育使用方案.
這樣的認知其實在受到 Openshift 中途拆免費使用者的台之後, 相比之下, GDrive 仍然維持每個帳號大約 15GB 的免費儲存量, 好像已經厚道, 但, 真正的原因可能是: 普羅大眾的網際儲存大數據, 仍然具有價值.
期望 Github 不要改變使用方針
以目前的情況來看, Github 對於上課專用的小 project, 在 2026 年之前免費存放 50 MB (目前的 limit 為 100MB) 以下的檔案, 然後總倉儲容量不要超過 1 GB (Github 目前最大容忍量為 5GB), 應該沒有太大問題, 另外一個限制則是每個目錄下最多只能有 1000 個檔案.
KMOLab 建立倉儲可以將 https://github.com/mdecourse/cmstemplate 當作 template 直接建立靜態網站與動態網站, 其中的靜態網站以 Github Pages 建立, 而動態網站則需要 Python 3 加上 flask flask_cors lxml bs4 markdown pelican leo 等模組.
針對將 Github 中的倉儲同步至 Gitlab, 也同時要啟用 Gitlab Pages, 則倉儲中額外需要 https://raw.githubusercontent.com/mdecourse/cad2020/master/.gitlab-ci.yml 進行設定. 而雙方倉儲的同步設定位於近端, 可以利用 git remote add 指令輕易達成, 一般是將推送到 Gitlab 的 git remote add 名稱設為 gitlab, 只要提交推送至 Github 後, 以 git push gitlab 就可以將同步資料的版本送到 Gitlab.
至於將靜態網站資料送到 Heroku 的設定, 則是透過 https://github.com/mdecourse/cad2020/blob/master/index.php 將倉儲的靜態內容以 PHP 伺服進行跳址傳送.
同步至 Fossil SCM 倉儲
將 Github 倉儲同步至 Fossil SCM 倉儲的目的, 其實就是考量若上述三個免費雲端儲存服務都面臨停用後, 在只有自架主機的情況下, 可以只使用 Fossil SCM 管理版本資料, 或者自行安裝 https://gitlab.com/gitlab-org/gitlab, 仍然可以在近端主機或遠端主機環境下的 Fossil SCM 與 Gitlab 倉儲維持與先前相同的工作流程.f
在此為了避免 Github 與 Fossil SCM 倉儲雙向同步下, 可能造成 FOSSIL 或 .fslckout 檔案的合併問題, 特別讓 Fossil SCM 倉儲保有 Github 倉儲的版本資料 (也就是 .git 目錄內容), 但 Github 倉儲則不儲存 FOSSIL 或 .fslckout 檔案.
實際的作法是以 Github 倉儲中的改版為主, 在 Fossil SCM 倉儲端僅透過 git pull 取得最新的 Github 倉儲內容, 然後再勾選 Fossil SCM 倉儲端設定的 dotfiles 選項, Fossil SCM 倉儲就能納入 Github 倉儲的版本資料.
基本的操作流程如下:
github 利用 cmstemplate 建立 CMSiMDE 倉儲 github 端完成靜態 Github Pages 設定 fossil 端, 在對應的 wd 目錄, 以 git clone --recurse-submodules 取下 github 端的倉儲內容 fossil 端 wd 中設法利用 fossil open 開啟從 fossil init 所建立的 fossil 倉儲 將 fossil 空白的 FOSSIL 或 .fslckout 檔案複製至 wd/倉儲名稱目錄下 利用 fossil add . 或 fossil addremove 將 git pull 從遠端取回的版本資料進行新增 再利用 fossil push 與 autosync 功能, 將改版資料送到 fossil 端. 最後則將 fossil 端的 default-csp 欄位設為 https://fonts.googleapis.com, 以便讓靜態網頁可以正常透過 doc/trunk/index.html 取得.
No comments:
Post a Comment