From 57fc3f15ae85148dc2e1513a2aa106c693864052 Mon Sep 17 00:00:00 2001 From: Alexandra Bruckner Date: Fri, 20 Oct 2023 14:38:50 +0200 Subject: [PATCH] Add github workflow actions (test, publish) --- .github/workflows/publish.yml | 41 +++++++++++++++++++++++++++ .github/workflows/test.yml | 53 +++++++++++++++++++++++++++++++++++ README.md | 4 +++ 3 files changed, 98 insertions(+) create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..aba4195 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,41 @@ +name: Publish package +on: + release: + types: [created] + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.10' + architecture: 'x64' + + - name: Install dependencies and package + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Build source and binary distribution package + run: | + python setup.py sdist bdist_wheel + env: + PACKAGE_VERSION: ${{ github.ref }} + + - name: Check distribution package + run: | + twine check dist/* + + - name: Publish distribution package + run: | + twine upload dist/* + env: + TWINE_REPOSITORY: ${{ secrets.PYPI_REPOSITORY }} + TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + TWINE_NON_INTERACTIVE: yes \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..7b64b6c --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,53 @@ +name: Run linter and tests +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: + - '3.8' + - '3.9' + - '3.10' + - '3.11' + django-version: + - '3.2' + - '4.1' + - '4.2' + + steps: + - uses: actions/checkout@v2 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies and package + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install django~=${{ matrix.django-version }}.0 + + - name: Run lint and code review with isort and black + run: | + pre-commit run --all-files + + - name: Run tests with coverage + run: | + # prepare Django project: link all necessary data from the test project into the root directory + # Hint: Simply changing the directory does not work (leads to missing files in coverage report) + ln -s ./tests/core core + ln -s ./tests/testapp testapp + ln -s ./tests/manage.py manage.py + + # run tests with coverage + coverage run \ + --source='./django_generic_contact' \ + manage.py test + coverage xml + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 \ No newline at end of file diff --git a/README.md b/README.md index 0197aac..2171e64 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ ## Django Generic Contact +[![PyPI version](https://img.shields.io/pypi/v/django-generic-contact.svg)](https://pypi.org/project/django-generic-contact/) +[![Run linter and tests](https://github.com/anexia/django-generic-contact/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/anexia/django-generic-contact/actions/workflows/test.yml) +[![Codecov](https://img.shields.io/codecov/c/gh/anexia/django-generic-contact)](https://codecov.io/gh/anexia/django-generic-contact) + Django module to store contact request in a structured yet generic manner within the database. ### Installation