From 8807bf6c9b678bf404b169ce296e2ddd7b9226e8 Mon Sep 17 00:00:00 2001 From: Marcel Amirault <mamirault@gitlab.com> Date: Tue, 1 Sep 2020 14:19:03 +0900 Subject: [PATCH] Test only changed docs in merged results pipelines Check what type of pipeline is running. If it's a merged results pipeline, use CI variables to determine the merge-base. Use git diff with merge-base to see what files changes, filtering on markdown files, then run vale and markdownlint on only those changed files. --- scripts/lint-doc.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/scripts/lint-doc.sh b/scripts/lint-doc.sh index 72e6334d0fcef..e4e0e21ca15b2 100755 --- a/scripts/lint-doc.sh +++ b/scripts/lint-doc.sh @@ -55,7 +55,18 @@ then ((ERRORCODE++)) fi -MD_DOC_PATH=${MD_DOC_PATH:-doc} +# Run Vale and Markdownlint only on changed files. Only works on merged results +# pipelines, so first checks if a merged results CI variable is present. If not present, +# runs test on all files. +if [ -z "${CI_MERGE_REQUEST_TARGET_BRANCH_SHA}" ] +then + MD_DOC_PATH=${MD_DOC_PATH:-doc} + echo "Merge request pipeline (detached) detected. Testing all files." +else + MERGE_BASE=$(git merge-base ${CI_MERGE_REQUEST_TARGET_BRANCH_SHA} ${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA}) + MD_DOC_PATH=$(git diff --name-only "${MERGE_BASE}..${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA}" '*.md') + echo -e "Merged results pipeline detected. Testing only the following files:\n${MD_DOC_PATH}" + fi function run_locally_or_in_docker() { local cmd=$1 -- GitLab