2020-06-10 10:28:48 +00:00
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.
2020-06-24 19:11:06 +00:00
# CONTAINER_ENGINE=podman make container-image
2020-06-10 10:28:48 +00:00
CONTAINER_ENGINE ?= docker
2020-10-05 22:42:07 +00:00
IMAGE_REGISTRY ?= gcr.io/k8s-staging-sig-docs
2024-12-31 07:22:46 +00:00
IMAGE_VERSION = $( shell scripts/hash-files.sh Dockerfile Makefile package.json package-lock.json | cut -c 1-12)
2020-10-05 22:42:07 +00:00
CONTAINER_IMAGE = $( IMAGE_REGISTRY) /k8s-website-hugo:v$( HUGO_VERSION) -$( IMAGE_VERSION)
2023-03-20 19:29:47 +00:00
# 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 "
2024-12-09 14:34:54 +00:00
CONTAINER_RUN_TTY = " $( CONTAINER_ENGINE) " run --rm --interactive --tty
CONTAINER_HUGO_MOUNTS = \
--read-only \
--mount type = bind,source= $( CURDIR) /.git,target= /src/.git,readonly \
--mount type = bind,source= $( CURDIR) /archetypes,target= /src/archetypes,readonly \
--mount type = bind,source= $( CURDIR) /assets,target= /src/assets,readonly \
--mount type = bind,source= $( CURDIR) /content,target= /src/content,readonly \
--mount type = bind,source= $( CURDIR) /data,target= /src/data,readonly \
--mount type = bind,source= $( CURDIR) /i18n,target= /src/i18n,readonly \
--mount type = bind,source= $( CURDIR) /layouts,target= /src/layouts,readonly \
--mount type = bind,source= $( CURDIR) /static,target= /src/static,readonly \
--mount type = tmpfs,destination= /tmp,tmpfs-mode= 01777 \
--mount type = bind,source= $( CURDIR) /hugo.toml,target= /src/hugo.toml,readonly
2020-06-10 10:28:48 +00:00
CCRED = \0 33[ 0; 31m
CCEND = \0 33[ 0m
2018-06-21 17:13:29 +00:00
2022-12-05 14:43:36 +00:00
# Docker buildx related settings for multi-arch images
DOCKER_BUILDX ?= docker buildx
2019-06-09 13:31:07 +00:00
.PHONY : all build build -preview help serve
2016-09-07 23:37:43 +00:00
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)
2022-01-13 10:02:24 +00:00
module-check : ## Check if all of the required submodules are correctly initialized.
2020-12-03 09:29:26 +00:00
@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
2022-01-13 10:02:24 +00:00
module-init : ## Initialize required submodules.
2020-12-03 09:29:26 +00:00
@echo "Initializing submodules..." 1>& 2
@git submodule update --init --recursive --depth 1
2020-06-14 18:51:51 +00:00
2018-08-21 19:51:15 +00:00
all : build ## Build site with production settings and put deliverables in ./public
2016-09-07 23:37:43 +00:00
2021-12-07 14:16:55 +00:00
build : module -check ## Build site with non-production settings and put deliverables in ./public
2022-08-16 19:26:07 +00:00
hugo --cleanDestinationDir --minify --environment development
2016-09-07 23:37:43 +00:00
2020-06-14 18:51:51 +00:00
build-preview : module -check ## Build site with drafts and future posts enabled
2022-08-16 19:26:07 +00:00
hugo --cleanDestinationDir --buildDrafts --buildFuture --environment preview
2016-09-07 23:37:43 +00:00
2020-02-11 19:28:07 +00:00
deploy-preview : ## Deploy preview site via netlify
2023-05-15 01:54:35 +00:00
GOMAXPROCS = 1 hugo --cleanDestinationDir --enableGitInfo --buildFuture --environment preview -b $( DEPLOY_PRIME_URL)
2020-01-15 12:47:33 +00:00
2018-10-03 20:04:39 +00:00
functions-build :
$( NETLIFY_FUNC) build functions-src
2018-08-21 19:51:15 +00:00
check-headers-file :
scripts/check-headers-file.sh
2021-12-07 14:16:55 +00:00
production-build : module -check ## Build the production site and ensure that noindex headers aren't added
2023-05-24 10:31:07 +00:00
GOMAXPROCS = 1 hugo --cleanDestinationDir --minify --environment production
2021-12-07 14:16:55 +00:00
HUGO_ENV = production $( MAKE) check-headers-file
2018-08-21 19:51:15 +00:00
2021-12-07 14:16:55 +00:00
non-production-build : module -check ## Build the non-production site, which adds noindex headers to prevent indexing
2023-05-24 10:31:07 +00:00
GOMAXPROCS = 1 hugo --cleanDestinationDir --enableGitInfo --environment nonprod
2018-08-21 19:51:15 +00:00
2020-06-14 18:51:51 +00:00
serve : module -check ## Boot the development server.
2024-11-26 19:04:32 +00:00
hugo server --buildDrafts --buildFuture --environment development
2017-08-06 04:11:12 +00:00
2018-06-21 17:13:29 +00:00
docker-image :
2020-06-10 10:28:48 +00:00
@echo -e " $( CCRED) **** The use of docker-image is deprecated. Use container-image instead. **** $( CCEND) "
$( MAKE) container-image
2018-06-21 17:13:29 +00:00
docker-build :
2020-06-10 10:28:48 +00:00
@echo -e " $( CCRED) **** The use of docker-build is deprecated. Use container-build instead. **** $( CCEND) "
$( MAKE) container-build
2018-06-21 17:13:29 +00:00
2018-07-27 17:33:57 +00:00
docker-serve :
2020-06-10 10:28:48 +00:00
@echo -e " $( CCRED) **** The use of docker-serve is deprecated. Use container-serve instead. **** $( CCEND) "
$( MAKE) container-serve
2020-11-05 12:02:21 +00:00
container-image : ## Build a container image for the preview of the website
2020-06-10 10:28:48 +00:00
$( CONTAINER_ENGINE) build . \
--network= host \
--tag $( CONTAINER_IMAGE) \
--build-arg HUGO_VERSION = $( HUGO_VERSION)
2022-06-01 07:43:32 +00:00
container-push : container -image ## Push container image for the preview of the website
$( CONTAINER_ENGINE) push $( CONTAINER_IMAGE)
2022-12-04 00:50:31 +00:00
PLATFORMS ?= linux/arm64,linux/amd64
docker-push : ## Build a multi-architecture image and push that into the registry
2024-08-22 03:43:47 +00:00
docker run --rm --privileged tonistiigi/binfmt:qemu-v8.1.5-43@sha256:46c5a036f13b8ad845d6703d38f8cce6dd7c0a1e4d42ac80792279cabaeff7fb --install all
2022-12-05 13:21:12 +00:00
docker version
2022-12-05 14:43:36 +00:00
$( DOCKER_BUILDX) version
$( DOCKER_BUILDX) inspect image-builder > /dev/null 2>& 1 || $( DOCKER_BUILDX) create --name image-builder --use
# copy existing Dockerfile and insert --platform=${TARGETPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile
sed -e 's/\(^FROM\)/FROM --platform=\$$\{TARGETPLATFORM\}/' Dockerfile > Dockerfile.cross
$( DOCKER_BUILDX) build \
2022-12-04 00:50:31 +00:00
--push \
--platform= $( PLATFORMS) \
--build-arg HUGO_VERSION = $( HUGO_VERSION) \
--tag $( CONTAINER_IMAGE) \
-f Dockerfile.cross .
2022-12-05 14:43:36 +00:00
$( DOCKER_BUILDX) stop image-builder
2022-12-04 00:50:31 +00:00
rm Dockerfile.cross
2020-06-14 18:51:51 +00:00
container-build : module -check
2024-11-16 13:11:29 +00:00
mkdir -p public
2024-12-09 14:34:54 +00:00
$( CONTAINER_RUN_TTY) $( CONTAINER_HUGO_MOUNTS) $( CONTAINER_IMAGE) \
hugo --destination /tmp/public --cleanDestinationDir --buildDrafts --buildFuture --environment preview --noBuildLock
2020-06-10 10:28:48 +00:00
2022-06-17 11:30:10 +00:00
# no build lock to allow for read-only mounts
2022-06-02 13:11:25 +00:00
container-serve : module -check ## Boot the development server using container.
2024-12-09 14:34:54 +00:00
$( CONTAINER_RUN_TTY) --cap-drop= ALL --cap-add= AUDIT_WRITE $( CONTAINER_HUGO_MOUNTS) \
-p 1313:1313 $( CONTAINER_IMAGE) \
2024-11-26 19:04:32 +00:00
hugo server --buildDrafts --buildFuture --environment development --bind 0.0.0.0 --destination /tmp/public --cleanDestinationDir --noBuildLock
2019-01-15 18:56:39 +00:00
2019-04-11 08:40:13 +00:00
test-examples :
scripts/test_examples.sh install
scripts/test_examples.sh run
2020-05-25 17:14:44 +00:00
.PHONY : link -checker -setup
link-checker-image-pull :
2020-06-10 10:28:48 +00:00
$( CONTAINER_ENGINE) pull wjdp/htmltest
docker-internal-linkcheck :
@echo -e " $( CCRED) **** The use of docker-internal-linkcheck is deprecated. Use container-internal-linkcheck instead. **** $( CCEND) "
$( MAKE) container-internal-linkcheck
container-internal-linkcheck : link -checker -image -pull
2021-12-07 14:16:55 +00:00
$( CONTAINER_RUN) $( CONTAINER_IMAGE) hugo --config config.toml,linkcheck-config.toml --buildFuture --environment test
2022-07-09 10:44:37 +00:00
$( CONTAINER_ENGINE) run --mount " type=bind,source= $( CURDIR) ,target=/test " --rm wjdp/htmltest htmltest
2021-01-19 19:51:46 +00:00
clean-api-reference : ## Clean all directories in API reference directory, preserve _index.md
rm -rf content/en/docs/reference/kubernetes-api/*/
api-reference : clean -api -reference ## Build the API reference pages. go needed
cd api-ref-generator/gen-resourcesdocs && \
2021-06-26 09:26:56 +00:00
go run cmd/main.go kwebsite --config-dir ../../api-ref-assets/config/ --file ../../api-ref-assets/api/swagger.json --output-dir ../../content/en/docs/reference/kubernetes-api --templates ../../api-ref-assets/templates