Skip to main content

Hugo デプロイ

Hugo CLI を使用して、サイトを GCS、S3、または Azure にアップロードできます。

“hugo deploy” コマンドを使用すると、Google Cloud Storage (GCS) バケット、AWS S3 バケット、Azure Storage コンテナにサイトを直接アップロードできます。

前提条件

デプロイするバケットを作成する

サイトをデプロイするストレージ バケットを作成します。 サイトを公開したい場合は、必ずバケットを一般公開できるように設定してください。

Google Cloud Storage (GCS)

バケットの作成方法に関する GCS の手順  に従います。

AWS S3

バケットの作成方法に関する AWS の手順  に従います。

Azure Storage

ストレージ コンテナの作成方法に関する Azure の手順  に従います。

デプロイメントを設定する

サイトの設定ファイルに [deployment] セクションを追加し、1 つ以上の [[deployment.targets]] セクションを、各デプロイメント ターゲットに対して 1 つずつ追加します。 以下は、その詳細な例です。

[deployment]
# デフォルトでは、ファイルは任意の順序でアップロードされます。
# "Order" リストの正規表現に一致するファイルが、リスト順に最初にアップロードされます。
order = [".jpg$", ".gif$"]


[[deployment.targets]]
# このターゲットの任意の名前です。
name = "mydeployment"
# デプロイ先の Go Cloud 開発キットの URL です。 例:
# GCS の場合は、 https://gocloud.dev/howto/blob/#gcs を参照してください。
# URL = "gs://<Bucket Name>"

# S3 の場合は、https://gocloud.dev/howto/blob/#s3 を参照してください。
# S3 互換のエンドポイントについては、https://gocloud.dev/howto/blob/#s3-compatible を参照してください。
# URL = "s3://<Bucket Name>?region=<AWS region>"

# Azure Blob Storage の場合は、https://gocloud.dev/howto/blob/#azure を参照してください。
# URL = "azblob://$web"

# 以下のように、"prefix=" クエリパラメータを使用すると、Bucket のサブフォルダを対象とすることができます。
# URL = "gs://<Bucket Name>?prefix=a/subfolder/"

# CloudFront CDN を使用している場合、デプロイは必要に応じてキャッシュを無効にします。
cloudFrontDistributionID = <ID>

# オプションで、特定のファイルを含めたり、除外したりすることができます。
# glob パターンの構文については、https://godoc.org/github.com/gobwas/glob#glob を参照してください。
# 空でない場合、そのパターンはローカルパスとマッチングされます。
# すべてのパスは、filepath.ToSlash 形式で照合されます。
# exclude が空でなく、ローカルまたはリモート ファイルのパスが一致する場合、そのファイルは同期されません。
# include が空でなく、ローカルまたはリモート ファイルのパスが一致しない場合、そのファイルは同期されません。
# その結果、include/exclude フィルターを通らないローカルファイルはリモートにアップロードされず、
# include/exclude フィルターを通らないリモートファイルは削除されません。
# include = "**.html" # は、拡張子が ".html" のファイルのみをインクルードします。
# exclude = "**.{jpg, png}" # は、拡張子が ".jpg" または ".png" のファイルを除外します。


# [[deployment.matchers]] は、Pattern に一致するファイルに対する動作を設定します。
# パターン構文については、https://golang.org/pkg/regexp/syntax/ を参照してください。
# パターン検索は、最初にマッチした時点で停止します。

# サンプル:

[[deployment.matchers]]
# 静的アセットを 1 年間キャッシュします。
pattern = "^.+\\.(js|css|svg|ttf)$"
cacheControl = "max-age=31536000, no-transform, public"
gzip = true

[[deployment.matchers]]
pattern = "^.+\\.(png|jpg)$"
cacheControl = "max-age=31536000, no-transform, public"
gzip = false

[[deployment.matchers]]
# Set custom content type for /sitemap.xml
pattern = "^sitemap\\.xml$"
contentType = "application/xml"
gzip = true

[[deployment.matchers]]
pattern = "^.+\\.(html|xml|json)$"
gzip = true

デプロイする

ターゲットにデプロイするには、以下のコマンドを実行します。

hugo deploy [--target=<target name>, defaults to first target]

Hugo は、リモートターゲットに反映させる必要があるローカルの変更を特定し、適用します。 変更を適用せずに確認したい場合は --dryRun を、変更する前にプロンプトを表示させたい場合は --confirm を使用します。

その他のコマンドライン オプションについては、hugo help deploy を参照してください。