チェックポイント
Create a Cloud Source Repository
/ 30
Launch the site at TCP port 8080
/ 30
Configure the cloud build and initiate it
/ 40
Cloud Build と Firebase のパイプラインを使用して Hugo ウェブサイトをデプロイする
GSP747
概要
このラボでは、静的ウェブサイト作成ツールである Hugo で構築されたウェブサイトをデプロイするためのパイプラインを作成します。まず、ウェブサイトのコンテンツを Cloud Source Repositories に保存し、Firebase を使用してウェブサイトをデプロイします。次に、Cloud Build を使用してパイプラインを作成し、リポジトリに commit された新しいコンテンツが自動的にデプロイされるようにします。
目標
このラボでは、次のことを学びます。
- 静的ウェブサイトの概要
- Hugo を使用してウェブサイトを設定する方法
- Cloud Source Repositories にウェブサイト コンテンツを保存する方法
- Firebase を使用してウェブサイトをデプロイする方法
- Cloud Build を使用してビルド パイプラインを作成し、デプロイを自動化する方法
事前準備
ラボを進めるために必要な手順はここで十分に説明されていますが、使用するサービスを実際に体験しておくと、より効果的に学ぶことができます。参考となる以下のラボもご確認ください。
静的ウェブサイトのメリット
Hugo のような静的サイト作成ツールは、ウェブサーバー不要でウェブサイトを作成できるという利点から採用されることが増えてきました。静的ウェブ プラットフォームでは、サーバーのオペレーティング システムやソフトウェアを保守する必要がありません。しかし、運用面ではさまざまな点を考慮する必要があります。たとえば、投稿のバージョン管理、コンテンツ配信ネットワーク(CDN)上でのウェブサイトのホスティング、SSL 証明書のプロビジョニングなどです。
これらのニーズには、Google Cloud 上で継続的インテグレーション / 継続的デプロイのパイプラインを使用することで対応できます。デプロイ パイプラインにより、開発者はデプロイ プロセス全体を自動化して、迅速なイノベーションを実現できます。このラボでは、この自動化を実証するパイプラインの構築方法を学習します。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
プロセスの概要
これから、以下の図に示すものを構築していきます。
目標は、コードを commit してパイプラインをトリガーし、そのパイプラインによってウェブサイトをデプロイすることです。このラボは、大きく 2 つの部分に分かれています。まず、ウェブサイトをローカルで構築し、手動で Firebase にデプロイします。これにより、プロセス全体の理解を得ることができます。次に、Cloud Build を使用してパイプラインを構築することにより、プロセスを自動化します。
タスク 1. 手動でのデプロイ
最初に、Linux インスタンス上にウェブサイトを手動で構築し、エンドツーエンドのプロセスを学びます。また、Linux インスタンスを使用して、Firebase の起動と実行に必要ないくつかのワンタイム タスクも実行します。
Linux インスタンスに接続する
- ナビゲーション メニューから、[Compute Engine] > [VM インスタンス] を選択します。作成済みのインスタンスが 1 つ表示されます。
- 次の図に示すように、行の最後に外部 IP アドレスと SSH ボタンが表示されます。これらが情報パネルによって隠れている場合は、パネルを閉じて、行全体が表示されるようにします。
- 後で使用するために、外部 IP アドレスはメモしておきます。
- [SSH] をクリックします。ウィンドウが開き、シェル プロンプトが表示されます。
ローカルで Hugo をインストールする
次に、ローカルで Hugo を Linux インスタンスにインストールして、Firebase を使ってデプロイする前にウェブサイトをローカルでテストできるようにします。これを簡単にするためのシェル スクリプトが提供されています。
- Linux インスタンスのシェルで、installhugo.sh ファイルを確認してください。
コンテンツは以下でも確認できます。
出力:
-
wget
コマンドを使用して Hugo をダウンロードし、tar
コマンドを使用して Hugo アーカイブを解凍します。このラボの後半でパイプラインを作成する際にも同様のコマンドを使用します。 -
以下のコマンドを入力してスクリプトを実行し、Hugo をインストールします。
以下のように、Hugo が /tmp
ディレクトリにインストールされたことを示すメッセージが表示されます。これで、ウェブサイトのインフラストラクチャを構築する準備が整いました。
リポジトリと最初のウェブサイトを作成する
まずウェブサイトを保持する Cloud Source Repositories のリポジトリを作成し、次に Linux インスタンスにそのリポジトリのクローンを作成します。リポジトリのクローンを作成すると、シェルにリポジトリのミラーが作成されます。これにより、シェル内でウェブサイトを実装し、後でファイル システムに変更を commit できるようになります。このラボの後半で、リポジトリに対するこれらの commit に応答するパイプラインを作成します。
- Linux VM に git をインストールします。
Linux インスタンスのシェルに次のコマンドを入力します。
プロンプトが表示されたら、すべてのプロンプトに Yes
で応じます。
- コード リポジトリとそのクローンを作成します。Linux インスタンスのシェルに次のコマンドを入力します。
次の図のように、リポジトリの作成とリポジトリのクローン作成に関する確認メッセージが表示されます。リポジトリの料金とリポジトリが空であることに関する 2 つの警告メッセージは無視してかまいません。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
- これで、サイトのストラクチャを作成する準備が整いました。Linux のシェルに以下のコマンドを入力します。
通常、hugo
コマンドによりディレクトリが作成されます。--force
オプションは、すでに存在するリポジトリ ディレクトリにサイトを作成します。これにより、先ほどクローンを作成したディレクトリに Git 関連の情報を保持できます。次の図のように、サイトが作成されたことを示すメッセージが表示されます。
- 次に、サイトのレイアウトとして使用する Ananke テーマをインストールします。Linux インスタンスのシェルに次のコマンドを入力します。
次のように、テーマのクローンが作成されたことを示すメッセージが表示されます。
- テーマのディレクトリから git ファイルを削除します。
- サイトのストラクチャが設定されると、プレビュー表示できるようになります。以下のコマンドを入力し、TCP ポート 8080 でサイトを開きます。
次の図に示すように、Hugo はサイトを構築し、TCP ポート 8080 でアクセスを提供します。サーバーは Ctrl+C キーを押すまで実行されます。
- ブラウザタブを開き、ポート 8080 の外部 IP アドレスに移動します。次の URL を使用します(
[EXTERNAL IP]
の部分をインスタンスの外部 IP アドレスに置き換えます)。
ウェブサイトが次のように表示されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
- Linux のシェルに戻り、Ctrl+C キーを押して Hugo サーバーを停止します。
プロジェクトに Firebase を追加する
どのようにウェブサイトが表示されるかを確認できました。これからウェブサイトを Firebase にデプロイします。最初に、既存のプロジェクト内で Firebase を有効にします。
-
Google Cloud コンソールへのアクセスに使用しているブラウザで新しいタブを開き、そこで Firebase を開いて Firebase コンソールに移動します。
-
[プロジェクトを追加] をクリックします。
プロジェクトの名前を選択するよう求められます。
- 次の図に示すように、名前フィールドの中をクリックして、「qwiklabs-gcp-...」で始まる既存の Google Cloud プロジェクトを選択します。
- [Firebase の規約に同意します] と [自身の取引、ビジネス、仕事、または職業のみを目的として Firebase を利用することを正式に認めます] のチェックボックスをオンにします。[続行] をクリックします。
- Firebase 料金プランを確認するよう求められることがあります。Firebase の費用はラボに含まれています。プロンプトが表示されたら、[プランを確認] をクリックします。
- Firebase をプロジェクトに追加したときに、いくつかの条件を確認するよう求められることがあります。[続行] をクリックします。
- この Firebase プロジェクトで Google アナリティクスを使用するかどうかを確認するよう求められます。これはラボの環境なので、切り替えボタンを使用して Google アナリティクスを無効にし、[Firebase を追加] をクリックします。Firebase がプロジェクトに追加されるまで約 1 分かかります。
- Firebase が追加された後にプロンプトが表示されたら、[続行] をクリックします。
サイトを Firebase にデプロイする
- Linux インスタンスのシェルで Firebase CLI をインストールします。
- 次に、Firebase を初期化する必要があります。シェルに以下のコマンドを入力します。
- 矢印キーとスペースバーを使用して [Hosting: Configure files for Firebase Hosting and (optionally) set up GitHub Action deploys] を選択し、Enter キーを押します。プロジェクトを選択するよう求められたら、[Use an existing project] を選択し、矢印キー、スペースバー、Enter キーを使用して、ラボの手順ページに表示されているプロジェクト ID を選択します。パブリック ディレクトリの場合、デフォルト値の [public] を選択します。シングルページ アプリケーションとして構成する場合、デフォルト値の [N] を選択します。GitHub による自動ビルド / デプロイの設定に対しては、[N] を選択します。
既存のファイルを上書きするか尋ねられた場合は、[Y] を選択します。
- アプリケーションをデプロイするための準備が整いました。以下のコマンドを Linux インスタンスのシェルに入力して、Hugo でサイトを再構築し、Firebase でデプロイします。
- アプリケーションがデプロイされると、ホスティング URL を受け取ります。URL をクリックし、同じウェブサイトが Firebase CDN(コンテンツ配信ネットワーク)から表示されていることを確認します。一般的な「ウェルカム」メッセージが表示された場合は、CDN が初期化されるまで数分待ってから、ブラウザ ウィンドウを更新します。後で使用するために、このホスティング URL を保存しておきます。
これで、デプロイ全体をローカルで実行できました。次に、Cloud Build を使用して、エンドツーエンドでプロセスを自動化します。
タスク 2. デプロイの自動化
最初の commit を実行する
パイプラインを構築する目的は、リポジトリに変更が加えられたときにビルドをトリガーできるようにすることです。まず、リポジトリに最初の commit を行い、今後の変更が行えることを検証します。
- 以下のコマンドを Linux のシェルに入力して、git コマンドのグローバル パラメータを構成します。二重引用符を忘れずに付けてください。
- Linux のシェルに以下のコマンドを入力して、リポジトリから特定のディレクトリを除外するための
.gitignore
ファイルを作成します。
- 以下のコマンドを入力して、リポジトリへの最初の commit を実行します。
これで、ウェブサイトの最初のバージョンが Google Cloud に commit(アップロード)されました。
ビルドを構成する
Cloud Build は、リポジトリのルート ディレクトリにある cloudbuild.yaml という名前のファイルを使用して、ビルドを実行します。このファイルは YAML 形式です。スペースとインデントは重要なので、Linux インスタンスにすでに配置されています。
- Linux のシェルに次のコマンドを入力します。
cp
コマンドの最後にピリオド(「.」)があることに注意してください。
- 次のコマンドを実行して、
cloudbuild.yaml
ファイルを確認します。一部の長い行は折り返されています。
出力:
-
cloudbuild.yaml
ファイルについて:
- このファイルには 3 つの名前付きの手順があり、それぞれがコンテナ イメージによって実行されます。最初の 2 つの手順では、Google がサポートするビルダーを使用して
wget
を実行し、Hugo と Firebase ツールをダウンロードします。これらの 2 つの手順は並行して実行されます。wget ビルダーを使用すると、wget
を手動でインストールするよりも時間を短縮できます。 - 3 番目のステップでは、標準の Ubuntu コンテナを使用して Hugo と Firebase をインストールし、その後サイトを構築してデプロイします。デプロイごとに Hugo と Firebase をインストールすると、最新バージョンの Firebase を使用しながら、いつでも Hugo のバージョンを変更できます。
-
tar
およびwget
コマンドは、以前にinstallhugo.sh
スクリプトで使用したものとほぼ同じです。 - このファイルには、カスタム置換変数(_HUGO_VERSION)と Google が提供する置換変数(PROJECT_ID)が使用されており、このテンプレートはさまざまな環境で使用することができます。
- Hugo と Firebase は、バイナリが作成されて一時ディレクトリにインストールされるため、誤ってウェブサイト自体にデプロイされることはありません。
Cloud Build トリガーを作成する
これから、リポジトリのマスター ブランチに対する commit に応答するトリガーを作成します。
- コマンドラインで次のコマンドを入力します。
- トリガーの構成には以下の内容が含まれます。
フィールド | 値 |
---|---|
名前 | commit-to-master-branch |
説明 | Push to master |
イベント | ブランチに push する |
リポジトリ | my_hugo_site |
ブランチ(正規表現) | ^master$(正規表現の反転がオフになっていることを確認してください) |
ビルド構成 | Cloud Build 構成ファイル(yaml または json) |
Cloud Build 構成ファイルの場所 | / cloudbuild.yaml |
Cloud Build サービス アカウント
Cloud Build サービス アカウントに、Firebase を使用してウェブサイトをデプロイするための権限を与える必要があります。
Cloud Build | ロール | 説明 |
---|---|---|
[PROJECT_NUMBER@cloudbuild.gserviceaccount.com | roles/firebasehosting.admin | Hosting リソースに対する完全な読み取り / 書き込みアクセス権 |
パイプラインをテストする
これでパイプラインが作成されたので、サイトに変更を加えてから commit を行い、変更が反映されるかどうかを確認できます。
- Linux のシェルに以下のコマンドを入力し、リポジトリのディレクトリに移動します。
- ファイル config.toml を編集し、タイトルを変更します。
- Linux のシェルに以下のコマンドを入力して、リポジトリへの変更を commit し、Cloud Build パイプラインをトリガーします。
- ビルド履歴でビルドのステータスを確認します。
- 現在のビルドのビルドログを確認します。
- 実行されたビルドから URL を取得します。
- ホスティング URL を参照して結果を確認します。 Firebase コンソールに移動し、プロジェクトを調べてドメイン名を見つけることもできます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
お疲れさまでした
CDN と SSL 証明書を提供する Firebase に対して Hugo ウェブサイトをすばやくデプロイするために、Cloud Build がどのようにパイプラインのオーケストレーションを行うことができるかを学習しました。Cloud Build を使用すると、ニーズに合わせてプロセスを調整することができます。デプロイにかかる時間が短いため、すばやく変化を取り入れ、ほとんど労力をかけることなくウェブサイトのリビジョンをテストすることができます。詳細については、Cloud Build と Firebase のドキュメントを参照してください。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 1 月 30 日
ラボの最終テスト日: 2023 年 12 月 11 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。