diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml new file mode 100644 index 000000000..0959d3801 --- /dev/null +++ b/.github/workflows/github-actions.yml @@ -0,0 +1,99 @@ +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: + 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 }} + - 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" + + 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: + 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 + - run: | + pip install wheel + python setup.py sdist bdist_wheel + - uses: pypa/gh-action-pypi-publish@master + if: github.event_name == 'create' && startsWith(github.ref, 'refs/tags/v') + with: + password: ${{ secrets.pypi_password }} + repository_url: https://test.pypi.org/legacy/ diff --git a/.github/workflows/install_ci_python_dep.sh b/.github/workflows/install_ci_python_dep.sh new file mode 100644 index 000000000..48b04e9d0 --- /dev/null +++ b/.github/workflows/install_ci_python_dep.sh @@ -0,0 +1,5 @@ +#!/bin/bash +pip install --upgrade pip +pip install coveralls +pip install pre-commit +pip install tox diff --git a/.github/workflows/install_mongo.sh b/.github/workflows/install_mongo.sh new file mode 100644 index 000000000..a98440a8f --- /dev/null +++ b/.github/workflows/install_mongo.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +MONGODB=$1 + +mongo_build=mongodb-linux-x86_64-${MONGODB} +wget http://fastdl.mongodb.org/linux/$mongo_build.tgz +tar xzf $mongo_build.tgz +${PWD}/$mongo_build/bin/mongod --version diff --git a/.github/workflows/start_mongo.sh b/.github/workflows/start_mongo.sh new file mode 100644 index 000000000..dc844dbd5 --- /dev/null +++ b/.github/workflows/start_mongo.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +MONGODB=$1 + +mongodb_dir=${PWD}/mongodb-linux-x86_64-${MONGODB} +mkdir $mongodb_dir/data +$mongodb_dir/bin/mongod --dbpath $mongodb_dir/data --logpath $mongodb_dir/mongodb.log --fork +mongo --eval 'db.version();' # Make sure mongo is awake diff --git a/.travis.yml b/.travis.yml index c5b37b6f5..5403753d8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -82,26 +82,27 @@ notifications: # Only run builds on the master branch and GitHub releases (tagged as vX.Y.Z) branches: + # Only run builds on the master branch and GitHub releases (tagged as vX.Y.Z) only: - master - /^v.*$/ # Whenever a new release is created via GitHub, publish it on PyPI. -deploy: - provider: pypi - user: the_drow - password: - secure: QMyatmWBnC6ZN3XLW2+fTBDU4LQcp1m/LjR2/0uamyeUzWKdlOoh/Wx5elOgLwt/8N9ppdPeG83ose1jOz69l5G0MUMjv8n/RIcMFSpCT59tGYqn3kh55b0cIZXFT9ar+5cxlif6a5rS72IHm5li7QQyxexJIII6Uxp0kpvUmek= - - # Create a source distribution and a pure python wheel for faster installs. - distributions: "sdist bdist_wheel" - - # Only deploy on tagged commits (aka GitHub releases) and only for the parent - # repo's builds running Python v3.7 along with PyMongo v3.x and MongoDB v3.4. - # We run Travis against many different Python, PyMongo, and MongoDB versions - # and we don't want the deploy to occur multiple times). - on: - tags: true - repo: MongoEngine/mongoengine - condition: ($PYMONGO = ${PYMONGO_3_11}) && ($MONGODB = ${MONGODB_3_4}) - python: 3.7 +#deploy: +# provider: pypi +# user: the_drow +# password: +# secure: QMyatmWBnC6ZN3XLW2+fTBDU4LQcp1m/LjR2/0uamyeUzWKdlOoh/Wx5elOgLwt/8N9ppdPeG83ose1jOz69l5G0MUMjv8n/RIcMFSpCT59tGYqn3kh55b0cIZXFT9ar+5cxlif6a5rS72IHm5li7QQyxexJIII6Uxp0kpvUmek= +# +# # Create a source distribution and a pure python wheel for faster installs. +# distributions: "sdist bdist_wheel" +# +# # Only deploy on tagged commits (aka GitHub releases) and only for the parent +# # repo's builds running Python v3.7 along with PyMongo v3.x and MongoDB v3.4. +# # We run Travis against many different Python, PyMongo, and MongoDB versions +# # and we don't want the deploy to occur multiple times). +# on: +# tags: true +# repo: MongoEngine/mongoengine +# condition: ($PYMONGO = ${PYMONGO_3_11}) && ($MONGODB = ${MONGODB_3_4}) +# python: 3.7