diff --git a/merge-request-check/Dockerfile b/merge-request-check/Dockerfile index a1cae24c350f64ab2e6c2e5c385633b7cd59960f..c42327ba786f2b1494643210544f9704045be32f 100644 --- a/merge-request-check/Dockerfile +++ b/merge-request-check/Dockerfile @@ -14,9 +14,12 @@ LABEL org.label-schema.build-date=$BUILD_DATE \ RUN mkdir /code WORKDIR /code +RUN apk add --no-cache bash git + COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY approval_check.py ./ +COPY merge_review_check.sh ./ CMD ["python", "approval_check.py"] diff --git a/merge-request-check/approval_check.py b/merge-request-check/approval_check.py index 628158ddf6303413ea5fa165c43f3ea1b574c5a6..45e70197a8b2137bba7b5ce02718ad5b99d5fc30 100644 --- a/merge-request-check/approval_check.py +++ b/merge-request-check/approval_check.py @@ -1,5 +1,6 @@ import os import requests +import subprocess import sys ''' @@ -18,11 +19,23 @@ response = requests.post('https://its-lampprod1-whm.unl.edu/merge_auth_check.php 'user': os.environ.get('GITLAB_USER_LOGIN') }) -if (response.status_code == 200): +if response.status_code == 200: # Merge is allowed, print response and exit cleanly (status 0) print(response.content.decode('utf-8')) exit(0) +elif response.status_code == 403: + # Merge is not allowed, run further checks to see if a review is needed. + result = subprocess.run(['bash', '/code/merge_review_check.sh'], capture_output=True, text=True) + + # Print output from additional checks script + print(result.stdout) + print(result.stderr, file=sys.stderr) + + # Exit using the exit code form the check script + exit(result.returncode) else: - # Merge is not allowed, print response and exit with an error (status 1) + # API call failed. Server may be down, or other setup failure. Exit with an error (status 1) + print('Merge request approval check API call failed') + print(f'API Call Status Code: {response.status_code}') print(response.content.decode('utf-8'), file=sys.stderr) exit(1) diff --git a/merge-request-check/merge_review_check.sh b/merge-request-check/merge_review_check.sh index 35570d21c6267015b3fe2fec5ffe29562b13ec28..b92f5f5d17f9c3f5c5829aebd80f78be56329d15 100644 --- a/merge-request-check/merge_review_check.sh +++ b/merge-request-check/merge_review_check.sh @@ -6,6 +6,9 @@ #CI_COMMIT_BEFORE_SHA="" #CI_COMMIT_SHA="" +# If any commands in this scprt fail, exit with a non-zero exit code +set -e + # Function to check for ASP.NET controls and directives check_aspx() { local content="$1"