照片

一個藥師的自由自語

無聊的人請進來.

高藥師

1 分鐘

對於很多人來說,或者是網路上的說明,都說Github和Gitlab一樣,不過網路上的教學幾乎都是Github,要找到Gitlab的非常非常少,就算有,也因為是技術人員寫的,所以根本不會寫一些簡單的事情。

實際上這兩個網站是有不少的差別的,對於想要把Hugo這個SSG,Host在上面的人來說,可能會花點力氣,至少對我這種沒程度的人來說,差點搞死了。

我覺得最大的差點有兩點,本來有三點,就是private repo,但是後來github也取消了。

  1. Hugo 產生的靜態網頁目錄,預設是public,是要直接丟在github上,然後就可以執行了。但是gitlab不行,他必須將整個網站丟上去,讓gitlab去執行,然後還必須設定一個CI/CD檔案。(就是這個設定,讓我搞了快一個月,本來是要放棄的,因為網路上找不到資料)。
  2. 有時候在git push 的時候,因為遠端的檔案比較新,github可以用force的指令,硬上傳就沒事,但是Gitlab一定要找出原因,通常要git pull下來解決才行,這個也挺頭大。

這裡記載一下搞了我很久的問題,就是設定CI/CD檔案,檔名是.gitlab-ci.yml 這個有範例,但不知道為何網路上範例都不一樣,結果不能用

image: monachus/hugo

variables:
  GIT_SUBMODULE_STRATEGY: recursive

test:
  script:
  - hugo
  except:
  - master

pages:
  script:
  - hugo
  artifacts:
    paths:
    - public
  only:
  - master

本來以為設定這個成功以後,就可以用了,沒想到居然出現

  fatal: No url found for submodule path 'public' in .gitmodules

我看大家都沒事,不知道我為何會這樣,找了半天資料告訴我應該先設定.gitmodules 這個檔案,裡面的內容是

  [submodule "path_to_submodule"] (這裡一定要 打public)
  path = path_to_submodule  (通常是 themes/版面名稱)
  url = git://url-of-source/ (版面的git位置)

設定好以後再

  git submodule init
  git submodule update

還要設定.gitignore 把 /public 加入,這裡表示不上傳原來需要上傳到github的那堆靜態網頁。

都完成這些步驟才可以git push

本來在github,輸出的目錄是預設public,但是可以改成其他名字,不過在gitlab,似乎只能用public,不然會一直產生錯誤。

comments powered by Disqus

最新文章

查看更多

關於

一個無聊的藥師,寫一些自己的心情