aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Ben Kochie <superq@gmail.com> 2020-03-26 10:00:46 +0100
committerGravatar GitHub <noreply@github.com> 2020-03-26 10:00:46 +0100
commit570bfba80eeb66498315f0a83fd665d72d20941c (patch)
tree634c5e20e5979d89fe4867382da526fa06d13d8c
parent14ca4549818c00c31dbcc861d7b12de2929e014c (diff)
downloadcoredns-570bfba80eeb66498315f0a83fd665d72d20941c.tar.gz
coredns-570bfba80eeb66498315f0a83fd665d72d20941c.tar.zst
coredns-570bfba80eeb66498315f0a83fd665d72d20941c.zip
Add CI test for man page updates (#3729)
Run make -f Makefile.doc in CircleCI to test that man pages are updated in PRs. Signed-off-by: Ben Kochie <superq@gmail.com>
-rw-r--r--.circleci/config.yml9
-rw-r--r--Makefile.doc31
-rwxr-xr-xfixup_file_mtime.sh15
3 files changed, 47 insertions, 8 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 6bfb2d013..3a1761a55 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -40,6 +40,14 @@ buildCoreDNSImage: &buildCoreDNSImage
kind load docker-image coredns
jobs:
+ doc-test:
+ docker:
+ - image: circleci/golang:1.13
+ steps:
+ - checkout
+ - run: ./fixup_file_mtime.sh
+ - run: make -f Makefile.doc
+ - run: git diff --exit-code -- man/
kubernetes-tests:
<<: *integrationDefaults
steps:
@@ -62,4 +70,5 @@ workflows:
version: 2
integration-tests:
jobs:
+ - doc-test
- kubernetes-tests
diff --git a/Makefile.doc b/Makefile.doc
index 95f4e1c6a..2adc143a3 100644
--- a/Makefile.doc
+++ b/Makefile.doc
@@ -3,20 +3,35 @@
# updated before doing a release. The Debian package, for instance, looks at these pages
# and will install them on your system.
-MMARK:=mmark -man
+MMARK_VERSION:=2.2.4
PLUGINS:=$(wildcard plugin/*/README.md)
READMES:=$(subst plugin/,,$(PLUGINS))
READMES:=$(subst /README.md,,$(READMES))
PLUGINS:=$(subst plugin/,coredns-,$(PLUGINS))
PLUGINS:=$(subst /README.md,(7),$(PLUGINS))
-ifeq (, $(shell which mmark))
- $(warning "No mmark in $$PATH, exiting, see github.com/mmarkdown/mmark")
-all:
- @echo "noop"
-else
-all: man/coredns.1 man/corefile.5 plugins
-endif
+all: mmark man/coredns.1 man/corefile.5 plugins
+
+GO ?= go
+GOHOSTOS ?= $(shell $(GO) env GOHOSTOS)
+GOHOSTARCH ?= $(shell $(GO) env GOHOSTARCH)
+GO_BUILD_PLATFORM ?= $(GOHOSTOS)_$(GOHOSTARCH)
+
+FIRST_GOPATH := $(firstword $(subst :, ,$(shell $(GO) env GOPATH)))
+MMARK_BIN := $(FIRST_GOPATH)/bin/mmark
+MMARK := $(FIRST_GOPATH)/bin/mmark -man
+
+MMARK_URL := https://github.com/mmarkdown/mmark/releases/download/v$(MMARK_VERSION)/mmark_$(MMARK_VERSION)_$(GO_BUILD_PLATFORM).tgz
+
+.PHONY: mmark
+mmark: $(MMARK_BIN)
+
+$(MMARK_BIN):
+ $(eval MMARK_TMP := $(shell mktemp -d))
+ curl -s -L $(MMARK_URL) | tar -xvzf - -C $(MMARK_TMP)
+ mkdir -p $(FIRST_GOPATH)/bin
+ cp $(MMARK_TMP)/mmark $(FIRST_GOPATH)/bin/mmark
+ rm -r $(MMARK_TMP)
man/coredns.1: coredns.1.md
@/bin/echo -e '%%%\n title = "coredns 1"\n' \
diff --git a/fixup_file_mtime.sh b/fixup_file_mtime.sh
new file mode 100755
index 000000000..662c16dbd
--- /dev/null
+++ b/fixup_file_mtime.sh
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+#
+# Description: Fix up the file mtimes based on the git log.
+
+set -u -o pipefail
+
+if [[ ! -f 'coredns.1.md' ]]; then
+ echo 'ERROR: Must be run from the top of the git repo.'
+ exit 1
+fi
+
+for file in coredns.1.md corefile.5.md plugin/*/README.md; do
+ time=$(git log --pretty=format:%cd -n 1 --date='format:%Y%m%d%H%M.%S' "${file}")
+ touch -m -t "${time}" "${file}"
+done