エンジニアブログを自作しました【その3】

Circle CI上でのビルド、デプロイ

こんにちは!

このブログは自分でサイトを作成して配信してます。 Circle CIを利用して簡単なビルド、デプロイができるようにしたので紹介します。

に分けて記載してます。 (2023年6月時点での情報になります。古くなってしまっている場合もありますのでご了承下さい。)


ツール

  • Circle CI とは
    • Sass型CI/CDサービスです。
    • クラウド上でビルド、テスト、デプロイなどができるサービスになります。
    • 同じような目的のツールに下記があります。

できたこと

  • ブログの記事ファイル(md)などをGithubのプライベートリポジトリで管理しており、Circle CIのプロジェクトとGithubのリポジトリを紐づけました。
  • Githubのmainブランチにpushした契機で、Circle CI上でワークフローが動き出し、HUGOビルドとデプロイを自動で実施してくれるように設定することが出来ました。

設定ファイル

  • Circle CIのアカウント登録やプロジェクトの設定なども必要になりますが、Web画面から設定できるので記載は省略します。
  • 設定ファイルの全体は下記になります。
  • 気になるところを一つずつ解説していきます。

    docker:
        - image: machin365ho/hugo-aws:0.101.0
    
    export AWS_ACCESS_KEY_ID=${P_AWS_ACCESS_KEY_ID}
    export AWS_SECRET_ACCESS_KEY=${P_AWS_SECRET_ACCESS_KEY}
    
    • hugo deployでAWSのアクセスキーが必要なのでここで定義しています。
    • 右辺の環境変数とその値はCircle CIのProject Settings > Environment Variablesで事前に設定したものを使えます。
    export GIT_SSH_COMMAND='ssh -i "$SSH_CONFIG_DIR/id_rsa" -o UserKnownHostsFile="$SSH_CONFIG_DIR/known_hosts"'
    
    • GIT_SSH_COMMAND環境変数への設定を行うことで、gitの裏で動くsshコマンドの設定が出来ます。
    • 使用してるDocker Imageによっては、Circle CI側で作成してくれるsshの設定(.sshフォルダ)をgitコマンドが使ってくれず、エラーになる場合がありましたので、GIT_SSH_COMMANDに正しいパスを設定してます。
    git submodule sync --recursive
    git submodule update --init --recursive
    

ローカルで動かす

  • Circle CI CLIをインストールすることで、ローカルで設定ファイルの検証ができたり、ジョブ実行ができたりします。

  • 設定ファイルの検証

circleci config validate
  • ローカル上で動くジョブの実行
    • 環境変数を渡したい場合、パラメータとして下記を追加します。
      • -e [環境変数名]=[値]
    • 現状、クラウド上で動かす場合と比べてcheckoutの動作が少し違っています。Git周りでローカルでは上手くいくがクラウド上だと上手く行かない現象が発生するかもしれないので注意は必要だと思います。
circleci local execute [job名]

最後に

HUGOのビルド、デプロイするだけなら手動で作業しても全然負担にならないので、作業的に楽にはならないですが、ワークフローが自動で動いているのを見るとスッキリして気持ちは良いです。 基本的な部分は習得できたので、今後業務でより複雑なCI/CDを作る時の練習にはなったかと思います。


See also