Newer
Older
GIT_SUBMODULE_STRATEGY: normal
PYTHONPATH: deps/ldapalchemy
- python3 -m pylint --version
- python3 -m coverage --version
- echo "${CI_COMMIT_TAG}" | grep -qE "v[0-9]+[.][0-9]+[.][0-9]+.*" && export UFFD_PACKAGE_VERSION="${CI_COMMIT_TAG#v}" || export UFFD_PACKAGE_VERSION="${CI_COMMIT_SHA}"
script:
- pip3 install build
- PACKAGE_VERSION="${UFFD_PACKAGE_VERSION}" python3 -m build
artifacts:
paths:
- dist/*
build:apt:
script:
- apt update
- apt-get install -y python3-all debhelper python3-pip git-buildpackage
- export PYBUILD_INSTALL_ARGS="--install-lib=/usr/share/uffd/ --install-scripts=/usr/share/uffd/"
- gbp dch --ignore-branch --debian-tag=v%\(version\)s
- dpkg-buildpackage -us -uc
- mkdir build
- mv ../*.deb build/
artifacts:
paths:
- build/*.deb
- debian/changelog
db_migrations_updated:
stage: test
script:
- FLASK_APP=uffd flask db upgrade
- FLASK_APP=uffd flask db migrate 2>&1 | grep -q 'No changes in schema detected'
- pip3 install pylint-gitlab # this force-updates jinja2 and some other packages!
- python3 -m pylint --exit-zero --rcfile .pylintrc --output-format=pylint_gitlab.GitlabCodeClimateReporter uffd > codeclimate.json
- python3 -m pylint --exit-zero --rcfile .pylintrc --output-format=pylint_gitlab.GitlabPagesHtmlReporter uffd > pylint.html
- python3 -m pylint --rcfile .pylintrc --output-format=text uffd
when: always
paths:
- pylint.html
reports:
codequality: codeclimate.json
unittests:
stage: test
script:
- UNITTEST_OPENLDAP=1 python3-coverage run --include 'uffd/*.py' -m pytest --junitxml=report.xml || true
- python3-coverage report -m
- python3-coverage html
- python3-coverage xml
artifacts:
when: always
paths:
- htmlcov/index.html
- htmlcov
expose_as: 'Coverage Report'
reports:
cobertura: coverage.xml
junit: report.xml
coverage: '/^TOTAL.*\s+(\d+\%)$/'
html5validator:
stage: test
script:
- rm -rf pages
- mkdir -p pages
- cp -r uffd/static pages/static
- DUMP_PAGES=pages python3 -m unittest discover tests
- sed -i -e 's/href="\/static\//href=".\/static\//g' -e 's/src="\/static\//src=".\/static\//g' pages/*.html
- html5validator --root pages 2>&1 | tee html5validator.log
artifacts:
when: on_failure
paths:
- pages
- html5validator.log
stage: test
script:
trans_de:
extends: .trans
variables:
TRANSLATION_LANGUAGE: de
test:package:pip:
stage: test
script:
- pip3 install dist/*.tar.gz
dependencies:
- build:pip
test:package:apt:
stage: test
script:
- apt -y install ./build/*.deb
dependencies:
- build:apt
rules:
- if: '$CI_COMMIT_TAG =~ /v[0-9]+[.][0-9]+[.][0-9]+.*/'
publish:pip:
extends: .publish
- TWINE_USERNAME="${GITLABPKGS_USERNAME}" TWINE_PASSWORD="${GITLABPKGS_PASSWORD}" python3 -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/*
- TWINE_USERNAME="${PYPI_USERNAME}" TWINE_PASSWORD="${PYPI_PASSWORD}" python3 -m twine upload dist/*