From 41e160233e5888e1504cf74ba48efdefb7368657 Mon Sep 17 00:00:00 2001 From: Andrew Grimberg Date: Mon, 10 May 2021 09:14:15 -0700 Subject: [PATCH] CI: Properly run gitlint in CI When running pre-commit in a CI system the COMMIT_EDITMSG does not (normally) get created as that is an artifact of editing the commit message. If the file doesn't exist then gitlint will skip which makes it possible for pre-commit checks that should fail, to pass. Since we want tox to run in a consistent manner both locally and in CI we need to play around a little with how we are checking the commit message. Signed-off-by: Andrew Grimberg Change-Id: Ife7b4f04be2bad582d2f406c9c72bf772b097b21 --- tox.ini | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/tox.ini b/tox.ini index b5837b4..d01e18a 100644 --- a/tox.ini +++ b/tox.ini @@ -28,9 +28,27 @@ commands = sphinx-build -j auto -W -b linkcheck -d {envtmpdir}/doctrees ./docs/ [testenv:pre-commit] basepython = python3 +allowlist_externals = + /bin/sh deps = pre-commit +passenv = HOME commands = - pre-commit install pre-commit run --all-files --show-diff-on-failure - pre-commit run gitlint --hook-stage commit-msg --commit-msg-filename .git/COMMIT_EDITMSG + /bin/sh -c 'if ! git config --get user.name > /dev/null; then \ + git config --global --add user.name "CI"; \ + touch .git/REMOVE_USERNAME; fi' + /bin/sh -c 'if ! git config --get user.email > /dev/null; then \ + git config --global --add user.email "ci@example.org"; \ + touch .git/REMOVE_USEREMAIL; fi' + /bin/sh -c "if [ -f .git/COMMIT_EDITMSG ]; then \ + cp .git/COMMIT_EDITMSG .git/COMMIT_MSGTOX; else \ + git log HEAD -n1 | tail -n +5 | cut -c 5- > .git/COMMIT_MSGTOX; fi" + pre-commit run gitlint --hook-stage commit-msg --commit-msg-filename .git/COMMIT_MSGTOX + /bin/sh -c "rm -f .git/COMMIT_MSGTOX" + /bin/sh -c "if [ -f .git/REMOVE_USERNAME ]; then \ + git config --global --unset user.name; \ + rm -f .git/REMOVE_USERNAME; fi" + /bin/sh -c "if [ -f .git/REMOVE_USEREMAIL ]; then \ + git config --global --unset user.email; \ + rm -f .git/REMOVE_USEREMAIL; fi" -- 2.16.6