diff --git a/Jenkinsfile b/Jenkinsfile index 082f2a2..32e64f8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -218,19 +218,43 @@ PY ;; esac set +e - docker buildx build --platform "${TEST_PLATFORM_RESOLVED}" --target test --load -t atlasbot-test . \ - && docker run --rm -v "$PWD/build:/out" atlasbot-test \ - python -m ruff check atlasbot scripts --select E,F,W,B,C90,I,RUF,ARG --ignore E501 \ - && docker run --rm -v "$PWD/build:/out" atlasbot-test \ - python scripts/check_file_sizes.py --root atlasbot --max-lines 500 \ - && docker run --rm -v "$PWD/build:/out" atlasbot-test \ - python scripts/check_docstrings.py --root atlasbot \ - && docker run --rm -v "$PWD/build:/out" atlasbot-test \ + docker buildx build --platform "${TEST_PLATFORM_RESOLVED}" --target test --load -t atlasbot-test . + prep_rc=$? + docs_rc=1 + loc_rc=1 + tests_rc=1 + coverage_contract_rc=1 + gate_rc=1 + if [ "${prep_rc}" -eq 0 ]; then + docker run --rm -v "$PWD/build:/out" atlasbot-test \ + python -m ruff check atlasbot scripts --select E,F,W,B,C90,I,RUF,ARG --ignore E501 + ruff_rc=$? + if [ "${ruff_rc}" -eq 0 ]; then + docker run --rm -v "$PWD/build:/out" atlasbot-test \ + python scripts/check_docstrings.py --root atlasbot + docs_rc=$? + else + docs_rc=${ruff_rc} + fi + docker run --rm -v "$PWD/build:/out" atlasbot-test \ + python scripts/check_file_sizes.py --root atlasbot --max-lines 500 + loc_rc=$? + docker run --rm -v "$PWD/build:/out" atlasbot-test \ python -m slipcover --json --out /out/coverage.json --source atlasbot --fail-under 95 \ - -m pytest -q --junitxml /out/junit.xml \ - && docker run --rm -v "$PWD/build:/out" atlasbot-test \ + -m pytest -q --junitxml /out/junit.xml + tests_rc=$? + docker run --rm -v "$PWD/build:/out" atlasbot-test \ python scripts/check_coverage.py /out/coverage.json --root atlasbot --threshold 95 - gate_rc=$? + coverage_contract_rc=$? + fi + printf '%s\n' "${docs_rc}" > build/docs-naming.rc + if [ "${prep_rc}" -eq 0 ]; then + gate_rc=0 + [ "${docs_rc}" -eq 0 ] || gate_rc=1 + [ "${loc_rc}" -eq 0 ] || gate_rc=1 + [ "${tests_rc}" -eq 0 ] || gate_rc=1 + [ "${coverage_contract_rc}" -eq 0 ] || gate_rc=1 + fi set -e printf '%s\n' "${gate_rc}" > build/quality-gate.rc ''' @@ -247,6 +271,7 @@ PY export COVERAGE_PATH='build/coverage.json' export SOURCE_ROOT='atlasbot' export QUALITY_GATE_RC_PATH='build/quality-gate.rc' + export QUALITY_GATE_DOCS_RC_PATH='build/docs-naming.rc' python scripts/publish_test_metrics.py || true ''' }