GitLab]gitlabGitLab-CIを使えば、リモートリポジトリへのプッシュを起点にCI/CDの処理(pipeline)を実行させ、GiLab Pagesにサイトジェネレーター(今回ならHugo)が生成したコンテンツを自動的に公開することができる。1,2

手順

Hugoで公開したい内容をサイトとして作成し、公開先としてGitLab$USER.gitlab.ioという名前のプロジェクトを作っておく。 そのうえで次のcommandを実行する。

  1. GitLabのpages projectのhugo example siteのprojectをcloneする。
    git clone git@gitlab.com:pages/hugo.git blog
    
  2. git meda date file を削除
    cd blog && rm -f .git
    git init
    
  3. hugo用のconfig fileを修正
    vim config.toml
    # baseurl = "https://$USER.gitlab.io"
    
  4. gitのremote ripogitoryにGitLab上のprojectを指定して、commit、pushする。
    git remote add origin git@gitlab.com:$USER/$USER.gitlab.io 
    git add . && git comit -m 'first'
    git push -u origin master
    

仕組み

GitLab Pages examplesプロジェクトに、サイトジェネレーター別のサブプロジェクト(今回はhugo)があり、ジェネレーターごとのCI/CD用.gitlab-ci.ymlが用意されている。リポジトリへのpushを発端に、GitLabがDockerのリポジトリのHugoのイメージを使って、コンテンツの生成と公開までをしてくれる。サイトの公開はGitLab Pagesの機能として実現されている。