HUGO_VERSION = $(shell grep ^HUGO_VERSION netlify.toml | tail -n 1 | cut -d '=' -f 2 | tr -d " \"\n") NODE_BIN = node_modules/.bin NETLIFY_FUNC = $(NODE_BIN)/netlify-lambda # The CONTAINER_ENGINE variable is used for specifying the container engine. By default 'docker' is used # but this can be overridden when calling make, e.g. # CONTAINER_ENGINE=podman make container-image CONTAINER_ENGINE ?= docker IMAGE_REGISTRY ?= gcr.io/k8s-staging-sig-docs IMAGE_VERSION=$(shell scripts/hash-files.sh Dockerfile Makefile | cut -c 1-12) CONTAINER_IMAGE = $(IMAGE_REGISTRY)/k8s-website-hugo:v$(HUGO_VERSION)-$(IMAGE_VERSION) # Mount read-only to allow use with tools like Podman in SELinux mode # Container targets don't need to write into /src CONTAINER_RUN = "$(CONTAINER_ENGINE)" run --rm --interactive --tty --volume "$(CURDIR):/src:ro,Z" CCRED=\033[0;31m CCEND=\033[0m # Docker buildx related settings for multi-arch images DOCKER_BUILDX ?= docker buildx REPO_ROOT:=${CURDIR}/.. # setup go for managing hugo # go1.9+ can autodetect GOROOT, but if some other tool sets it ... GOROOT:= # enable modules GO111MODULE=on # disable CGO by default for static binaries CGO_ENABLED=0 DOCKER = docker HUGO_VERSION = 0.60.0 DOCKER_IMAGE = jojomi/hugo:$(HUGO_VERSION) DOCKER_RUN = $(DOCKER) run --rm --interactive --tty --volume $(realpath $(CURDIR)/..):/src -p 1313:1313 --workdir /src/site --entrypoint=hugo --platform linux/amd64 $(DOCKER_IMAGE) HUGO_BIN:=$(REPO_ROOT)/bin/hugo $(HUGO_BIN): go build -o $(HUGO_BIN) github.com/gohugoio/hugo .PHONY: help help: ## Show this help. @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) .PHONY: container-image module-check: ## Check if all of the required submodules are correctly initialized. @git submodule status --recursive | awk '/^[+-]/ {err = 1; printf "\033[31mWARNING\033[0m Submodule not initialized: \033[34m%s\033[0m\n",$$2} END { if (err != 0) print "You need to run \033[32mmake module-init\033[0m to initialize missing modules first"; exit err }' 1>&2 .PHONY: module-init module-init: ## Initialize required submodules. @echo "Initializing submodules..." 1>&2 @git submodule update --init --recursive --depth 1 all: build ## Build site with production settings and put deliverables in ./public .PHONY: build build: module-check ## Build site with non-production settings and put deliverables in ./public $(HUGO_BIN) --cleanDestinationDir --minify --environment development .PHONY: build-preview build-preview: module-check ## Build site with drafts and future posts enabled $(HUGO_BIN) --cleanDestinationDir --buildDrafts --buildFuture --environment preview .PHONY: functions-build functions-build: ## Build functions $(NETLIFY_FUNC) build functions-src .PHONY: hugo hugo: $(HUGO_BIN) ## Build site with production settings and put deliverables in ./public $(HUGO_BIN) --cleanDestinationDir --minify --environment production .PHONY: serve serve: hugo ## Serve site at http://localhost:1313/ $(HUGO_BIN) server --bind="0.0.0.0" \ --ignoreCache \ --buildFuture \ --disableFastRender