diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml new file mode 100644 index 00000000..78dff523 --- /dev/null +++ b/.github/workflows/automerge.yml @@ -0,0 +1,41 @@ +name: Automerge Pull Requests +on: + pull_request: + types: + - labeled + - unlabeled + - synchronize + - opened + - edited + - ready_for_review + - reopened + - unlocked + pull_request_review: + types: + - submitted + check_suite: + types: + - completed + status: {} + +jobs: + automerge: + name: Automerge Dependabot + runs-on: ubuntu-latest + if: github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]' + steps: + - name: 'Wait for status checks' + id: waitforstatuschecks + uses: "WyriHaximus/github-action-wait-for-status@v1.3" + with: + ignoreActions: Automerge Dependabot + checkInterval: 13 + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + - name: Merge pull requests + uses: pascalgn/automerge-action@v0.13.1 + if: steps.waitforstatuschecks.outputs.status == 'success' + env: + MERGE_METHOD: "squash" + MERGE_LABELS: "" + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..79c14442 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,26 @@ +name: Test build package + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + name: Build Python 🐍 distributions 📦 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: Set up Python 3.9 + uses: actions/setup-python@v2 + with: + python-version: 3.9 + - name: Install build tools + run: pip install pep517 + - name: Build a wheel package + run: python -m pep517.build . + - name: Install twine to check the package + run: pip install twine + - name: Check the package + run: twine check dist/* diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml new file mode 100644 index 00000000..020dd5a9 --- /dev/null +++ b/.github/workflows/linters.yml @@ -0,0 +1,60 @@ +name: Run linters + +on: + push: + branches: [ master ] + paths: + - '**.py' + - .github/workflows/linters.yml + - requirements-lint.txt + pull_request: + branches: [ master ] + paths: + - '**.py' + - .github/workflows/linters.yml + - requirements-lint.txt + +jobs: + pydocstyle: + runs-on: ubuntu-latest + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.8 + uses: actions/setup-python@v2 + with: + python-version: 3.8 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements-lint.txt + - name: Run pydocstyle + run: | + pydocstyle src/ tests/ + + pycodestyle: + runs-on: ubuntu-latest + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.8 + uses: actions/setup-python@v2 + with: + python-version: 3.8 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements-lint.txt + - name: Run pydocstyle + run: | + pycodestyle src/ tests/ + black: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + - uses: psf/black@21.5b0 diff --git a/.github/workflows/pypi.yml b/.github/workflows/pypi.yml new file mode 100644 index 00000000..fed3bbc2 --- /dev/null +++ b/.github/workflows/pypi.yml @@ -0,0 +1,29 @@ +name: Package and publish +on: + push: + tags: + - v* +jobs: + build-n-publish: + name: Build and publish Python 🐍 distributions 📦 to PyPI + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: Set up Python 3.9 + uses: actions/setup-python@v2 + with: + python-version: 3.9 + - name: Install build tools + run: pip install pep517 + - name: Build a wheel package + run: python -m pep517.build . +# - name: Publish distribution 📦 to Test PyPI +# uses: pypa/gh-action-pypi-publish@master +# with: +# password: ${{ secrets.test_pypi_password }} +# repository_url: https://test.pypi.org/legacy/ + - name: Publish distribution 📦 to PyPI + uses: pypa/gh-action-pypi-publish@master + with: + password: ${{ secrets.pypi_password }} + verbose: true diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 00000000..3e8e130f --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,56 @@ +name: Run tests + +on: + push: + branches: [ master ] + paths: + - '**.py' + - .github/workflows/tests.yml + - requirements-test.txt + pull_request: + branches: [ master ] + +jobs: + tests: + runs-on: ubuntu-latest + strategy: + fail-fast: true + matrix: + python-version: [3.7, 3.8, 3.9, pypy-3.7-v7.3.3] + env: + OS: ubuntu-latest + PYTHON: ${{ matrix.python-version }} + # Service containers to run with `container-job` + + 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 Elasticsearch + run: | + wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add - + sudo apt-get install apt-transport-https + echo "deb https://artifacts.elastic.co/packages/7.12/apt stable main" | tee /etc/apt/sources.list.d/elastic-7.12.list + - name: Check installed locales + run: | + locale -a + sudo locale-gen de_DE.UTF-8 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements-test.txt + - name: Run test + run: | + py.test -n 0 --cov-report=xml + - name: Run xdist test + run: | + py.test -n 1 --cov-report=xml:coverage-xdist.xml + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v1 + with: + files: ./coverage.xml, ./coverage-xdist.xml, ./docker.xml + flags: linux + env_vars: OS, PYTHON + fail_ci_if_error: true