Monday, February 22, 2021

2021 工作流程

請注意: http://fossil.kmol.info 僅支援 IPv6 網路協定.

2021 年起的工作流程已經逐步確立, 其中為了因應 G Suite for Education 改名為 Google Workspace for Education 後, 免費的 GDrive 已經不再提供 unlimited 使用, 因此 @gm 上的儲存空間將只提供當學期所使用的下載服務.

其實在網際網路上, 本來就沒有免費使用的服務, 差別只在於連線上網過程所使用的各種資源, 到底是誰在付出代價?

2018 年起 KMOLab 所開設的課程已經全面使用 CMSiMDE 建立動態與靜態網站, 其中的動態網站主要用於近端或網際的網站內容編輯, 而靜態網站則使用 Github, Gitlab, HerokuFossil SCM 進行同步伺服, 意即每一個與 KMOLab 有關的課程內容資料, 遠端可以有四個同步備份, 而近端則是工作目錄所在電腦, 則可以具有與遠端版本相同或相近的多個分散式備分內容.

雲端的同步資料中只有 Heroku 可以執行 Python, 但能夠免費使用的總容量限制在 500 MB 以內, 因此大多僅用於 Python 網際程式開發測試或跳板之用.

至於 GithubGitlab 的競爭其實已經告一段落, 等塵埃落定, 勝出的一方將會與 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 SCMGitlab 倉儲維持與先前相同的工作流程.f

在此為了避免 GithubFossil 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