Gitlab の CI/CD 機能で Firebase Hosting に Hugo をデプロイする

どうも、たくチャレ(@takuchalle)です。

以前Cloud BUild を使って Firebase Hosting にデプロイする方法を書きました

しばらくこれで運用していたんですが、気になるところが見えてきたので、リポジトリをGitLabに移動してデプロイも行うようにしました。

Cloud Build をやめる理由

完全に僕の確認ミスが原因ですが、Cloud Build で使っている KMS(Key Management Service)は無料枠がなかったのです…

料金表を見るとKMS は暗号・復号しなくても、キーを持ってるだけでお金がかかります。 月額にしてたかが数円の値段ですが、塵も積もれば山となるので使うのをやめることにしました。

それとGCP 側で課金を有効ににすると、紐づいているFirebaseプロジェクトも課金プランのBlazeになっちゃうのも気になっていたので、やめることにしました。

GitLab にした理由

  • プライベートリポジトリが無料
  • 以前 CI/CD 機能を使ったことがある

RailsTutorialをやった時に GitLab の CI/CD 機能を使っていたので簡単にいけるかなと思ったのでGitLabにしました。

GitLab で Firebase Hosting に Hugo をデプロイする方法

今回はDockerイメージを作ってやってみました。

A docker image with hugo and firebase-cli installed - takuyaohashi/docker-hugo-firebase

すでに作ってる人がいたのですがバージョンが古かったので、フォークしてバージョンを上げました。

イメージは DockerHub にもアップしてあるので使ってください。

README.md にも書いてありますが、.gitlab-ci.ymlの内容はこんな感じです。

image: takuyaohashi/docker-hugo-firebase

before_script:
  - hugo version
  - firebase --version

hugo_firebase:
  stage: deploy
  only:
    - master
  except:
    - dev
  script:
  - rm -rf public
  - hugo
  - firebase deploy -m "Pipeline $CI_PIPELINE_ID, build $CI_BUILD_ID" --token ${FIREBASE_TOKEN} --only hosting 

FIREBASE_TOKENは直接記述せずに必ず環境変数で渡すようにしてください。

まとめ

作業時間は30分もかからず移行できました。gitで管理してると取り回しが簡単ですね。

試行錯誤しながらフラフラしてましたが、これでひとまずブログのインフラ・運用周りは落ち着きますかね。 他にもいろいろやりたいこと・やってみたいことがあるので挑戦していきます。

同じカテゴリの記事