From 35a541de0d0309602c43c46ef42ee4aea40b30a8 Mon Sep 17 00:00:00 2001 From: Alan Nelson <alan.nelson@nebraska.edu> Date: Mon, 19 Aug 2024 17:28:09 -0500 Subject: [PATCH] Integrate new bash script into approval check flow --- merge-request-check/Dockerfile | 3 +++ merge-request-check/approval_check.py | 17 +++++++++++++++-- merge-request-check/merge_review_check.sh | 3 +++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/merge-request-check/Dockerfile b/merge-request-check/Dockerfile index a1cae24..c42327b 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 628158d..45e7019 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 35570d2..b92f5f5 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" -- GitLab