Content HubとGitHubを連携して効率化

Content HubとGitHubを連携して効率化

目次

    はじめに

    こんにちは!デジタルエンジニアリング部の老田です。

    この記事では、Content Hub、コードエディタ、GitHubの連携について解説します。コードエディタでコードを編集し、GitHubでマージすることで、GitHub Actionsを活用してHubSpotのデザインマネージャーに自動で反映される設定方法を紹介します。

    アジアクエストではContent Hubを利用してコーポレートサイトやTechBlogなどのウェブサイトを運営しています。 HubSpotにはデザインマネージャーがあり、HubSpot上でコード管理ができるという利点があります。 しかし、コードの修正時に変更前と変更後の差分が表示されないため、レビューが難しいという課題がありました。

    そこで今回は、Content Hubのデザインマネージャーとコードエディタ、GitHubを連携させることで、コードエディタでのコード編集、GitHubでのコード管理、そしてHubSpotでのコンテンツ反映を一つのワークフローとして実現する方法を紹介します。

    Content Hubについて

    Content Hubは、HubSpot社が提供するマーケティング、セールス、サービスを統合したオールインワンプラットフォームのCMS機能の名称です。CMS(Content Management System、コンテンツ管理システム)とは、ウェブサイトのすべてのコンテンツを一元管理できるシステムのことを指します。

    HubSpot CLIについて

    HubSpot CLI(Command Line Interface)は、HubSpotのAPIを利用してローカル開発環境とHubSpotを接続するためのツールです。 主に以下の3つのコマンドを使用します。

    • upload- ローカルのファイルやディレクトリを手動でHubSpotアカウントにアップロード
      hs upload <ローカルディレクトリのパス> <HubSpotデザインツールのパス>
    • watch- ローカルディレクトリを監視し、変更があるたびに自動的にHubSpotアカウントにアップロード
      hs watch <ローカルディレクトリのパス> <HubSpotデザインツールのパス>
    • fetch- HubSpotアカウントからファイルやディレクトリをローカルにダウンロードする
      hs fetch <HubSpotデザインツールのパス> <ローカルディレクトリのパス>

    HubSpotとコードエディタの連携

    前提条件

    • 開発者サンドボックスアカウントの作成
    • node.js がインストールされていること
      node.js
      ・node v10 以上がサポート対象

    HubSpot CLIインストールと初期設定

    1. HubSpot CLIをインストール
      作業用ディレクトリを作成し、HubSpot CLIをダウンロードします。
      npm install -g @hubspot/cli
      任意のディレクトリにのみインストールする場合
      npm install @hubspot/cli 
      すでにHubSpot CLIがインストールされていて、最新版にアップグレードする場合
      npm install -g @hubspot/cli@latest
      HubSpot CLIをダウンロード後、シェルを再起動します。
      exec $SHELL -l
    2. HubSpotアカウントに接続
      hs init
    3. アカウント認証
      1. 「」というメッセージが表示されたら「y」を入力し、Enterキーを押下します。
        HubSpotの「パーソナル アクセス キー | HubSpot」のページに遷移します。パーソナルアクセスキー
      2. 「パーソナルアクセスキーを生成」を押下し、パーソナルアクセスキーを生成します。
        ※ アカウント選択画面が表示された場合は、作成したサンドボックスアカウントを選択し、「このアカウントで続行」を押下すると、「パーソナル アクセス キー | HubSpot」に遷移します。アカウント選択画面
      3. パーソナルアクセスキーを生成後、「表示」「コピー」を押してキーをコピーし、ターミナルに貼り付けます。
        またアカウントに識別用の名前をつけEnterを押すと、アカウント情報がhubspot.config.ymlに追加されます。パーソナルアクセスキー生成後
        hs accounts list
        を実行すれば認証済みのアカウントを確認できます。

      4. HubSpotのデザインマネージャーからコードエディタにフォルダーを取り込む場合は以下のコマンドを実行します。
        hs fetch <HubSpotデザインツールのパス> <ローカルディレクトリのパス>

    これでContent Hubとコードエディタの初期設定は完了です。

    ローカル環境の構築とGitHubとHubSpotの連携

    前提条件

    • GitHubでリポジトリが作成されていること

    コードエディタとGitHubの連携

    1. リポジトリをクローンする
      git clone <リポジトリ名>
    2. リポジトリ下に移動
      cd <リポジトリ名>
    3. ローカルのフォルダーをGitHubリポジトリに移動
      パターン1: ファイルエクスプローラーを使用
      フォルダ内の全てのファイル/サブファイルをカットまたはコピーし、クローンしたリポジトリフォルダ内に貼り付けます。
      パターン2: コマンドラインを使用
      cp -R <ローカルディレクトリのパス>/* <クローンしたリポジトリのパス>

    4. GitHubリポジトリでシークレットを作成
      GitHub Actionsを利用してHubSpotにデプロイする際には、HubSpotのアカウント情報や個人アクセスキーなどの機密情報をセキュアに扱う必要があります。この機密情報を直接コードに含めるのはセキュリティ上のリスクがあるため、GitHubではシークレットとして設定することで、これらの情報を安全に管理し、ワークフロー内で必要なときにのみ使用できるようにします。

      1. リポジトリ名の下にある「Settings」をクリックSetting
      2. サイドバーの「Security」セクションで「Secrets and variables」を選び、「Actions」をクリックActions
      3. 「Secrets」タブで「New repository secrets」をクリックNew repository secrets
      4. "Name" フィールドにコンテナの名前を、"Secret" フィールドにシークレットの値を入力
        今回は以下の2つのシークレットを作成します。
        HUBSPOT_PORTAL_ID
        HUBSPOT_PERSONAL_ACCESS_KEY
        HubSpot CLIインストール時に作成されたhubspot.config.ymlファイルから確認可能Secrets
      5. 「Add secret」をクリックし、シークレットを作成

    5. ローカルに .github/workflows フォルダーを作り、main.ymlファイルを作成

    補足

    • .github/workflows フォルダー - GitHub Actionsのワークフロー設定ファイルを格納する場所です。
    • main.yml ファイル- GitHubでのコードのプッシュやマージに応じて実行されるアクションを定義するファイルです。これにより、GitHubリポジトリ内のコード変更が自動的にHubSpotにデプロイされます。

    管理するファイルが1つの場合は以下のように記述します。

    // github/workflows/main.yaml

    on:
    push:
    branches:
    - main

    jobs:
    deploy:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
    uses: actions/checkout@v4

    - name: Remove .github directory # HubSpotにアップロードする際に.githubフォルダーを削除
    run: rm -rf ./.github/

    - name: Setup Node.js
    uses: actions/setup-node@v4

    - name: HubSpot-Deploy-Action
    uses: HubSpot/hubspot-cms-deploy-action@v1.7
    with:
    src_dir: <ローカルディレクトリのパス>
    dest_dir: <HubSpotデザインツールのパス>
    portal_id: $
    personal_access_key: $

    管理するファイルが2つ以上の場合は以下のように記述します。

    // github/workflows/main.yaml

    on:
    push:
    branches:
    - main

    jobs:
    changes:
    runs-on: ubuntu-latest
    outputs:
    folder1: $
    folder2: $

    steps:
    - uses: actions/checkout@v4
    - id: filter
    uses: dorny/paths-filter@v2
    with:
    list-files: shell
    filters: |
    <ローカルディレクトリのパス>:
    - '<ローカルディレクトリのパス>/**'
    <ローカルディレクトリのパス>:
    - '<ローカルディレクトリのパス>/**'

    deploy_folder1:
    needs: changes
    if: $false
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: HubSpot Deploy Action for Folder1
    uses: HubSpot/hubspot-cms-deploy-action@v1.7
    with:
    src_dir: '<ローカルディレクトリのパス>'
    dest_dir: '<HubSpotデザインツールのパス>'
    portal_id: $
    personal_access_key: $

    deploy_folder2:
    needs: changes
    if: $false
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: HubSpot Deploy Action for Folder2
    uses: HubSpot/hubspot-cms-deploy-action@v1.7
    with:
    src_dir: '<ローカルディレクトリのパス>'
    dest_dir: '<HubSpotデザインツールのパス>'
    portal_id: $
    personal_access_key: $

    まとめ

    今回は、Content HubとGitHubを連携して、コードの管理とデプロイを効率化する方法について解説しました。
    この記事が、Content Hubを活用しているものの、どのようにGitHubと連携すればいいのか迷っている方々にとって、一つの参考例となれば幸いです。

    【参考】

    アジアクエスト株式会社では一緒に働いていただける方を募集しています。
    興味のある方は以下のURLを御覧ください。