hugo/docs/content/en/hosting-and-deployment/hugo-deploy.md

4.1 KiB

title linktitle description date publishdate lastmod categories keywords authors menu weight sections_weight draft aliases toc
Hugo Deploy Hugo Deploy You can upload your site to GCS, S3, or Azure using the Hugo CLI. 2019-05-30 2019-05-30 2019-05-30
hosting and deployment
s3
gcs
azure
hosting
deployment
Robert van Gent
docs
parent weight
hosting-and-deployment 10
10 10 false
true

You can use the "hugo deploy" command to upload your site directly to a Google Compute Storage (GCS) bucket, an AWS S3 bucket, and/or an Azure Storage bucket.

Assumptions

Create a bucket to deploy to

Create a storage bucket to deploy your site to. If you want your site to be public, be sure to configure the bucket to be publicly readable.

Google Cloud Storage (GCS)

Follow the GCS instructions for how to create a bucket.

AWS S3

Follow the AWS instructions for how to create a bucket.

Azure Storage

Follow the Azure instructions for how to create a bucket.

Configure the deployment

In the configuration file for your site, add a [deployment] section with one or more [[deployment.targets]] section, one for each deployment target. Here's a detailed example:

[deployment]
# By default, files are uploaded in an arbitrary order.
# Files that match the regular expressions in the "Order" list
# will be uploaded first, in the listed order.
order = [".jpg$", ".gif$"]


[[deployment.targets]]
# An arbitrary name for this target.
name = "mydeployment"
# The Go Cloud Development Kit URL to deploy to. Examples:
  # URL = "gs://<Bucket Name>"  # For GCS; see https://gocloud.dev/howto/blob/open-bucket/#gcs.
  # URL = "s3://<Bucket Name>?region=<AWS region>"  # For S3; see https://gocloud.dev/howto/blob/open-bucket/#s3.
  # URL = "azblob://$web"  # For Azure Storage; see https://gocloud.dev/howto/blob/open-bucket/#azure.
# You can use a "prefix=" query parameter to target a subfolder of the bucket:
  # URL = "gs://<Bucket Name>?prefix=a/subfolder/"
# If you are using a CloudFront CDN, deploy will invalidate the cache as needed.
cloudFrontDistributionID = <ID>


# ... add more [[deployment.targets]] sections ...


# [[deployment.matchers]] configure behavior for files that match the Pattern.
# Samples:

[[deployment.matchers]]
#  Cache static assets for 20 years.
pattern = "^.+\\.(js|css|svg|ttf)$"
cacheControl = "max-age=630720000, no-transform, public"
gzip = true

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

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

Deploy

To deploy to a target:

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

Hugo will identify and apply any local changes that need to be reflected to the remote target. You can use --dryRun to see the changes without applying them, or --confirm to be prompted before making changes.

See hugo help deploy for more command-line options.