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_4: 3.4.19 MONGODB_3_6: 3.6.13 MONGODB_4_0: 4.0.13 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: 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, pypy3] MONGODB: [$MONGODB_4_0] PYMONGO: [$PYMONGO_3_11] include: - python-version: 3.7 MONGODB: $MONGODB_3_4 PYMONGO: $PYMONGO_3_6 - python-version: 3.7 MONGODB: $MONGODB_3_6 PYMONGO: $PYMONGO_3_9 - python-version: 3.7 MONGODB: $MONGODB_3_6 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 }} 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 irc_notification: runs-on: ubuntu-latest needs: [linting, test] steps: - uses: rectalogic/notify-irc@v1 if: success() with: channel: "irc.freenode.org#mongoengine" nickname: github-notifier message: | Build ${{ job.status }} - ${{ github.actor }} ${{ github.event_name }} ${{ github.event.ref }} build-n-publish-dummy: runs-on: ubuntu-latest needs: [linting, test] 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 (hacking versioning to make it unique) 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 if: github.event_name != 'pull_request' 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] 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 if: github.event_name == 'create' && startsWith(github.ref, 'refs/tags/v') with: password: ${{ secrets.pypi_token }}