diff --git a/.deadlink b/.deadlink new file mode 100644 index 0000000..9793212 --- /dev/null +++ b/.deadlink @@ -0,0 +1,10 @@ +directories: + - "./" +fileExtensions: + - ".md" + - ".rst" +goldenURL: "https://google.com" +ignored: + - "https://google.com" +maxFailures: 0 +logVerbosity: 1 \ No newline at end of file diff --git a/.zuul.yaml b/.zuul.yaml index 0f2017a..2cba457 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -16,6 +16,9 @@ vars: rtd_webhook_id: '90144' rtd_project_name: 'airship-docs' + check: + jobs: + - airship-docs-dead-link-linter post: jobs: - airship-docs-upload-git-mirror @@ -34,6 +37,12 @@ secret: airship-docs-airshipit-github-secret pass-to-parent: true +- job: + name: airship-docs-dead-link-linter + description: Ensures all URLs referenced in documentation are still working + run: playbooks/airship-docs-dead-link-linter.yaml + voting: false + - secret: name: airship-docs-airshipit-github-secret data: diff --git a/Makefile b/Makefile index 59cf69a..53ffdae 100644 --- a/Makefile +++ b/Makefile @@ -50,3 +50,8 @@ clean: .PHONY: tests tests: check-tox tox + +# Validate all URL references in documentation work +.PHONY: dead-link-linter +dead-link-linter: + @./tools/dead-link-linter diff --git a/playbooks/airship-docs-dead-link-linter.yaml b/playbooks/airship-docs-dead-link-linter.yaml new file mode 100644 index 0000000..0a870f3 --- /dev/null +++ b/playbooks/airship-docs-dead-link-linter.yaml @@ -0,0 +1,20 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +- hosts: primary + tasks: + - name: Run Auxiliary Linter + block: + - name: "make dead-link-linter" + make: + chdir: "{{ zuul.project.src_dir }}" + target: dead-link-linter \ No newline at end of file diff --git a/tools/dead-link-linter b/tools/dead-link-linter new file mode 100755 index 0000000..481dde6 --- /dev/null +++ b/tools/dead-link-linter @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +set -xe +: "${LINTER_VERSION:="1.0.3"}" +: "${OS_TYPE:="linux"}" +: "${ARCHITECTURE:="amd64"}" + +URL="https://github.com/DannyMassa/dead-link-linter/releases/download/${LINTER_VERSION}/dead-link-linter-${LINTER_VERSION}-${OS_TYPE}-${ARCHITECTURE}.tar.gz" +TAR_BALL="dead-link-linter-${LINTER_VERSION}-${OS_TYPE}-${ARCHITECTURE}.tar.gz" + +wget ${URL} +tar -xvf ${TAR_BALL} +./dead-link-linter + +status=$? +[ $status -eq 0 ] && \ + echo "Dead Link Linter Passed" && \ + rm ${TAR_BALL} && \ + rm dead-link-linter && \ + exit 0 \ + || \ + echo "Dead Link Linter Failed" && \ + rm ${TAR_BALL} && \ + rm dead-link-linter && \ + exit 1