diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml new file mode 100644 index 0000000..451e378 --- /dev/null +++ b/.github/workflows/actions.yml @@ -0,0 +1,95 @@ +name: build + +env: + PYTHON_MAIN_VERSION: 3.8 + +on: + pull_request: + branches: + - '*' + push: + branches: + - '*' + tags: + - '*' + +jobs: + build-linux: + runs-on: ubuntu-latest + strategy: + max-parallel: 5 + matrix: + python-version: [3.8, 3.7, 3.6, 3.5, 3.9] + + 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 + run: | + sudo apt-get update -qq + python -m pip install --upgrade pip + python -m pip install flake8 pytest coveralls + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + + - name: install package + run: | + pip install . + pip list + + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + + - name: Generate coverage report + run: | + pip install pytest + pip install pytest-cov + pytest --cov=./ --cov-report=xml + + - name: Upload coverage to Codecov + if: ${{ matrix.python-version == env.PYTHON_MAIN_VERSION }} + uses: codecov/codecov-action@v1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ./coverage.xml + # directory: ./coverage/reports/ + flags: unittests + env_vars: OS,PYTHON + name: codecov-umbrella + fail_ci_if_error: true + # path_to_write_report: ./coverage/codecov_report.txt + verbose: true + + - name: Documentation build + if: ${{ matrix.python-version == env.PYTHON_MAIN_VERSION && github.ref == 'refs/heads/master'}} + run: | + pip install sphinx>=3.1.1 sphinx-gallery sphinx-rtd-theme>=0.5.0 sphinx-autodoc-typehints numpydoc wget nbsphinx + sudo apt-get install pandoc + sphinx-build -b html -aET docs/source docs/_build/html + touch docs/_build/html/.nojekyll + + - name: Deploy to GitHub Pages + if: ${{ matrix.python-version == env.PYTHON_MAIN_VERSION && github.ref == 'refs/heads/master'}} + uses: crazy-max/ghaction-github-pages@v2 + with: + target_branch: gh-pages + build_dir: docs/_build/html + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload to PyPi + if: startsWith( github.ref, 'refs/tags') && matrix.python-version == env.PYTHON_MAIN_VERSION + env: + PYPI_TOKEN_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} + run: | + pip install wheel twine + python setup.py sdist bdist_wheel + twine upload --username "__token__" --password $PYPI_TOKEN_PASSWORD dist/* diff --git a/README.rst b/README.rst index 2559591..f308fd2 100644 --- a/README.rst +++ b/README.rst @@ -1,17 +1,17 @@ pyNSID ====== -.. image:: https://travis-ci.com/pycroscopy/pynsid.svg?branch=master - :target: https://travis-ci.com/pycroscopy/pynsid - :alt: TravisCI +.. image:: https://github.com/pycroscopy/pyNSID/workflows/build/badge.svg?branch=master + :target: https://github.com/pycroscopy/pyNSID/actions?query=workflow%3Abuild + :alt: GitHub Actions .. image:: https://img.shields.io/pypi/v/pynsid.svg :target: https://pypi.org/project/pynsid/ :alt: PyPI -.. image:: https://coveralls.io/repos/github/pycroscopy/pyNSID/badge.svg?branch=master - :target: https://coveralls.io/github/pycroscopy/pyNSID?branch=master - :alt: Coveralls +.. image:: https://codecov.io/gh/pycroscopy/pyNSID/branch/master/graph/badge.svg?token=484EH7UML3 + :target: https://codecov.io/gh/pycroscopy/pyNSID + :alt: CodeCov .. image:: https://img.shields.io/pypi/l/pynsid.svg :target: https://pypi.org/project/pynsid/