46 lines
1.7 KiB
Bash
Executable File
46 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
# Check .circleci/config.yml is up to date and valid, and that all changes are
|
|
# included together in this commit.
|
|
|
|
# Fail early if we accidentally used '.yaml' instead of '.yml'
|
|
if ! git diff --name-only --cached --exit-code -- '.circleci/***.yaml'; then
|
|
echo "ERROR: File(s) with .yaml extension detected. Please rename them .yml instead."
|
|
exit 1
|
|
fi
|
|
|
|
# Succeed early if no changes to yml files in .circleci/ are currently staged.
|
|
# make ci-verify is slow so we really don't want to run it unnecessarily.
|
|
if git diff --name-only --cached --exit-code -- '.circleci/***.yml'; then
|
|
exit 0
|
|
fi
|
|
|
|
# Make sure to add no explicit output before this line, as it would just be noise
|
|
# for those making non-circleci changes.
|
|
echo "==> Verifying config changes in .circleci/"
|
|
echo "--> OK: All files are .yml not .yaml"
|
|
|
|
# Ensure commit includes _all_ files in .circleci/
|
|
# So not only are the files up to date, but we are also committing them in one go.
|
|
if ! git diff --name-only --exit-code -- '.circleci/***.yml'; then
|
|
echo "ERROR: Some .yml diffs in .circleci/ are staged, others not."
|
|
echo "Please commit the entire .circleci/ directory together, or omit it altogether."
|
|
exit 1
|
|
fi
|
|
|
|
# Even untracked yml or yaml files will get baked into the output.
|
|
# This is a loose check on _any_ untracked files in .circleci/ for simplicity.
|
|
if [ -n "$(git ls-files --others --exclude-standard '.circleci/')" ]; then
|
|
echo "ERROR: You have untracked files in .circleci/ please add or delete them."
|
|
exit 1
|
|
fi
|
|
|
|
echo "--> OK: All .yml files in .circleci are staged."
|
|
if ! make -C .circleci ci-verify; then
|
|
echo "ERROR: make ci-verify failed"
|
|
exit 1
|
|
fi
|
|
echo "--> OK: make ci-verify succeeded."
|