diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..e7324eeff303f8a0135aeead6a7693b0df11f143 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,105 @@ +stages: + - checks + - tests + - publish + - coverage + +variables: + DOCKER_IMAGE: "registry.duniter.org/docker/python3/poetry" + +image: $DOCKER_IMAGE/3.7:latest + +.code_changes: + only: + changes: + - bin/silkaj + - silkaj/*.py + - tests/*.py + +.changes: + extends: .code_changes + only: + changes: + - .gitlab-ci.yml + - pyproject.toml + - poetry.lock + +build: + extends: .changes + stage: checks + script: + - poetry install --no-dev + - poetry build + +format: + extends: .code_changes + stage: checks + image: $DOCKER_IMAGE/3.8:latest + script: + - black --check bin silkaj tests + +.type: + extends: .code_changes + stage: checks + script: + - poetry install + - poetry run mypy/pyright + +.tests: + extends: .changes + stage: tests + before_script: + - poetry install + +tests-3.5: + extends: .tests + image: $DOCKER_IMAGE/3.5:latest + script: + - poetry run pytest + +tests-3.6: + extends: .tests + image: $DOCKER_IMAGE/3.6:latest + script: + - poetry run pytest + +tests-3.7: + extends: .tests + image: $DOCKER_IMAGE/3.7:latest + script: + - poetry run pytest --cov silkaj --cov-report html:cov_html + artifacts: + paths: + - cov_html + +tests-3.8: + extends: .tests + image: $DOCKER_IMAGE/3.8:latest + script: + - poetry run pytest + +pypi_test: + stage: publish + when: manual + script: + - poetry install --no-dev + - poetry config repositories.pypi_test https://test.pypi.org/legacy/ + - poetry publish --build --username Silkaj --password $PYPI_TEST_PASSWORD --repository pypi_test + +pypi: + stage: publish + only: + - tags + when: manual + script: + - poetry install --no-dev + - poetry publish --build --username GitLab --password $PYPI_PASSWORD + +pages: + extends: .code_changes + stage: coverage + script: mv cov_html/ public/ + artifacts: + paths: + - public + expire_in: 2 days