144 lines
4.5 KiB
YAML
144 lines
4.5 KiB
YAML
name: MongoengineCI
|
|
on:
|
|
# All PR
|
|
pull_request:
|
|
# master branch merge
|
|
push:
|
|
branches:
|
|
- master
|
|
# release tags
|
|
create:
|
|
tags:
|
|
- 'v[0-9]+\.[0-9]+\.[0-9]+*'
|
|
env:
|
|
MONGODB_3_6: 3.6.14
|
|
MONGODB_4_0: 4.0.23
|
|
MONGODB_4_2: 4.2
|
|
MONGODB_4_4: 4.4
|
|
|
|
PYMONGO_3_4: 3.4
|
|
PYMONGO_3_6: 3.6
|
|
PYMONGO_3_9: 3.9
|
|
PYMONGO_3_11: 3.11
|
|
|
|
MAIN_PYTHON_VERSION: 3.7
|
|
|
|
jobs:
|
|
linting:
|
|
# Run pre-commit (https://pre-commit.com/)
|
|
# which runs pre-configured linter & autoformatter
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Set up Python 3.7
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: 3.7
|
|
- run: bash .github/workflows/install_ci_python_dep.sh
|
|
- run: pre-commit run -a
|
|
|
|
test:
|
|
# Test suite run against recent python versions
|
|
# and against a few combination of MongoDB and pymongo
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
python-version: [3.6, 3.7, 3.8, 3.9, 3.10, pypy3]
|
|
MONGODB: [$MONGODB_4_0]
|
|
PYMONGO: [$PYMONGO_3_11]
|
|
include:
|
|
- python-version: 3.7
|
|
MONGODB: $MONGODB_3_6
|
|
PYMONGO: $PYMONGO_3_9
|
|
- python-version: 3.7
|
|
MONGODB: $MONGODB_4_2
|
|
PYMONGO: $PYMONGO_3_6
|
|
- python-version: 3.7
|
|
MONGODB: $MONGODB_4_4
|
|
PYMONGO: $PYMONGO_3_11
|
|
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 mongo and ci dependencies
|
|
run: |
|
|
bash .github/workflows/install_mongo.sh ${{ matrix.MONGODB }}
|
|
bash .github/workflows/install_ci_python_dep.sh
|
|
bash .github/workflows/start_mongo.sh ${{ matrix.MONGODB }}
|
|
- name: tox dry-run (to pre-install venv)
|
|
run: tox -e $(echo py${{ matrix.python-version }}-mg${{ matrix.PYMONGO }} | tr -d . | sed -e 's/pypypy/pypy/') -- -a "-k=test_ci_placeholder"
|
|
- name: Run test suite
|
|
run: tox -e $(echo py${{ matrix.python-version }}-mg${{ matrix.PYMONGO }} | tr -d . | sed -e 's/pypypy/pypy/') -- -a "--cov=mongoengine"
|
|
- name: Send coverage to Coveralls
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
COVERALLS_SERVICE_NAME: github
|
|
if: ${{ matrix.python-version == env.MAIN_PYTHON_VERSION }}
|
|
run: coveralls
|
|
|
|
build_doc_dryrun:
|
|
# ensures that readthedocs can be built continuously
|
|
# to avoid that it breaks when new releases are being created
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: 3.7
|
|
- name: install python dep
|
|
run: |
|
|
pip install -e .
|
|
pip install -r docs/requirements.txt
|
|
- name: build doc
|
|
run: |
|
|
cd docs
|
|
make html-readthedocs
|
|
|
|
build-n-publish-dummy:
|
|
runs-on: ubuntu-latest
|
|
needs: [linting, test, build_doc_dryrun]
|
|
if: github.event_name != 'pull_request'
|
|
steps:
|
|
- uses: actions/checkout@master
|
|
- name: Set up Python 3.7
|
|
uses: actions/setup-python@v1
|
|
with:
|
|
python-version: 3.7
|
|
- name: build dummy wheel for test-pypi
|
|
run: |
|
|
pip install wheel
|
|
python setup.py egg_info -b ".dev`date '+%Y%m%d%H%M%S'`" build sdist bdist_wheel
|
|
# - name: publish test-pypi
|
|
# # Although working and recommended, test-pypi has a limit
|
|
# # in the size of projects so it's better to avoid publishing
|
|
# # until there is a way to garbage collect these dummy releases
|
|
# uses: pypa/gh-action-pypi-publish@master
|
|
# with:
|
|
# password: ${{ secrets.test_pypi_token }}
|
|
# repository_url: https://test.pypi.org/legacy/
|
|
|
|
build-n-publish:
|
|
runs-on: ubuntu-latest
|
|
needs: [linting, test, build_doc_dryrun, build-n-publish-dummy]
|
|
if: github.event_name == 'create' && startsWith(github.ref, 'refs/tags/v')
|
|
steps:
|
|
- uses: actions/checkout@master
|
|
- name: Set up Python 3.7
|
|
uses: actions/setup-python@v1
|
|
with:
|
|
python-version: 3.7
|
|
# todo separate build from publish
|
|
# https://stackoverflow.com/questions/59349905/which-properties-does-github-event-in-a-github-workflow-have
|
|
- name: build dummy wheel for test-pypi
|
|
run: |
|
|
pip install wheel
|
|
python setup.py sdist bdist_wheel
|
|
- name: publish pypi
|
|
uses: pypa/gh-action-pypi-publish@master
|
|
with:
|
|
password: ${{ secrets.pypi_token }}
|