diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 577f060..ecac318 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -35,6 +35,39 @@ pylint: - ./pylint/ expire_in: 1 week +pylint-check: + stage: Formatter + needs: [] + allow_failure: true + before_script: + - pip install pylint pylint-exit anybadge + - apt-get update + - apt-get install -y bc + script: + # Identify changed Python files + - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then + TARGET_BRANCH_COMMIT_SHA=$(git rev-parse $CI_MERGE_REQUEST_TARGET_BRANCH_NAME); + CHANGED_FILES=$(git diff --name-only $SOURCE_BRANCH_COMMIT_SHA $TARGET_BRANCH_COMMIT_SHA | grep '\.py$' || true); + else + CHANGED_FILES=$(git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA | grep '\.py$' || true); + fi + - if [ -z "$CHANGED_FILES" ]; then echo "No Python files changed."; exit 0; fi + + # Run pylint only on changed files + - mkdir ./pylint + - pylint $CHANGED_FILES --output-format=text . | tee ./pylint/pylint_changed_files.log || pylint-exit $? + - PYLINT_SCORE=$(sed -n 's/^Your code has been rated at \([-0-9.]*\)\/.*/\1/p' ./pylint/pylint_changed_files.log) + - echo "Pylint score is $PYLINT_SCORE" + + # Fail the job if the pylint score is below 9 + - if [ "$(echo "$PYLINT_SCORE < 9" | bc)" -eq 1 ]; then echo "Your pylint score is below the acceptable threshold (9)."; exit 1; fi + artifacts: + paths: + - ./pylint/ + expire_in: 1 week + + + pytest: stage: Test script: