diff options
author | Alexandre Gramfort <alexandre.gramfort@m4x.org> | 2020-04-21 12:26:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-21 12:26:23 +0200 |
commit | e5931823630010bb5a99586accf09606b0a3bf90 (patch) | |
tree | 3fb445a4eb86014686d71c6a17b929caf8afe655 | |
parent | 3ade772179eb0405ae6bc70cfc5e701b70d70e89 (diff) | |
parent | 3eed3cad36ec5f5691dc029853bc36bfad5ee389 (diff) |
Doc ci build (#145)
add codecov + circle ci to upload website + activate github actions for testing
-rw-r--r-- | .circleci/artifact_path | 1 | ||||
-rw-r--r-- | .circleci/config.yml | 137 | ||||
-rw-r--r-- | .github/workflows/main.yml | 12 | ||||
-rw-r--r-- | .github/workflows/pythonpackage.yml | 24 | ||||
-rw-r--r-- | .travis.yml | 5 | ||||
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | codecov.yml | 14 | ||||
-rw-r--r-- | docs/requirements.txt | 5 |
8 files changed, 195 insertions, 4 deletions
diff --git a/.circleci/artifact_path b/.circleci/artifact_path new file mode 100644 index 0000000..aa9acb8 --- /dev/null +++ b/.circleci/artifact_path @@ -0,0 +1 @@ +0/docs/build/html/index.html diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..9701ad1 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,137 @@ +# Tagging a commit with [circle front] will build the front page and perform test-doc. +# Tagging a commit with [circle full] will build everything. +version: 2 +jobs: + build_docs: + docker: + - image: circleci/python:3.7-stretch + steps: + - checkout + - run: + name: Set BASH_ENV + command: | + echo "set -e" >> $BASH_ENV + echo "export DISPLAY=:99" >> $BASH_ENV + echo "export OPENBLAS_NUM_THREADS=4" >> $BASH_ENV + echo "BASH_ENV:" + cat $BASH_ENV + + - run: + name: Merge with upstream + command: | + echo $(git log -1 --pretty=%B) | tee gitlog.txt + echo ${CI_PULL_REQUEST//*pull\//} | tee merge.txt + if [[ $(cat merge.txt) != "" ]]; then + echo "Merging $(cat merge.txt)"; + git remote add upstream git://github.com/PythonOT/POT.git; + git pull --ff-only upstream "refs/pull/$(cat merge.txt)/merge"; + git fetch upstream master; + fi + + # Load our data + - restore_cache: + keys: + - data-cache-0 + - pip-cache + + - run: + name: Spin up Xvfb + command: | + /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1400x900x24 -ac +extension GLX +render -noreset; + + # https://github.com/ContinuumIO/anaconda-issues/issues/9190#issuecomment-386508136 + # https://github.com/golemfactory/golem/issues/1019 + - run: + name: Fix libgcc_s.so.1 pthread_cancel bug + command: | + sudo apt-get install qt5-default + + - run: + name: Get Python running + command: | + python -m pip install --user --upgrade --progress-bar off pip + python -m pip install --user --upgrade --progress-bar off -r requirements.txt + python -m pip install --user --upgrade --progress-bar off -r docs/requirements.txt + python -m pip install --user --upgrade --progress-bar off ipython "https://api.github.com/repos/sphinx-gallery/sphinx-gallery/zipball/master" memory_profiler + python -m pip install --user -e . + + - save_cache: + key: pip-cache + paths: + - ~/.cache/pip + + # Look at what we have and fail early if there is some library conflict + - run: + name: Check installation + command: | + which python + python -c "import ot" + + # Build docs + - run: + name: make html + command: | + cd docs; + make html; + + # Save the outputs + - store_artifacts: + path: docs/build/html/ + destination: dev + - persist_to_workspace: + root: docs/build + paths: + - html + + deploy: + docker: + - image: circleci/python:3.6-jessie + steps: + - attach_workspace: + at: /tmp/build + - run: + name: Fetch docs + command: | + set -e + mkdir -p ~/.ssh + echo -e "Host *\nStrictHostKeyChecking no" > ~/.ssh/config + chmod og= ~/.ssh/config + if [ ! -d ~/PythonOT.github.io ]; then + git clone git@github.com:/PythonOT/PythonOT.github.io.git ~/PythonOT.github.io --depth=1 + fi + - run: + name: Deploy docs + command: | + set -e; + if [ "${CIRCLE_BRANCH}" == "master" ]; then + git config --global user.email "circle@PythonOT.com"; + git config --global user.name "Circle CI"; + cd ~/PythonOT.github.io; + git checkout master + git remote -v + git fetch origin + git reset --hard origin/master + git clean -xdf + echo "Deploying dev docs for ${CIRCLE_BRANCH}."; + cp -a /tmp/build/html/* .; + touch .nojekyll; + git add -A; + git commit -m "CircleCI update of dev docs (${CIRCLE_BUILD_NUM})."; + git push origin master; + else + echo "No deployment (build: ${CIRCLE_BRANCH})."; + fi + +workflows: + version: 2 + + default: + jobs: + - build_docs + - deploy: + requires: + - build_docs + filters: + branches: + only: + - master diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..7153fe6 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,12 @@ +on: [status] +jobs: + circleci_artifacts_redirector_job: + runs-on: ubuntu-latest + name: Run CircleCI artifacts redirector + steps: + - name: GitHub Action step + uses: larsoner/circleci-artifacts-redirector-action@master + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + artifact-path: 0/dev/index.html + circleci-jobs: build_docs diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index cb3baf8..c4b0165 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -1,6 +1,14 @@ name: Test Package -on: [push] +on: + push: + branches: + - '**' + create: + branches: + - 'master' + tags: + - '**' jobs: build: @@ -9,7 +17,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: [2.7, 3.5, 3.6, 3.7] + python-version: [3.5, 3.6, 3.7, 3.8] steps: - uses: actions/checkout@v1 @@ -21,10 +29,20 @@ jobs: run: | python -m pip install --upgrade pip pip install -r requirements.txt + pip install flake8 pytest "pytest-cov<2.6" codecov + pip install -U "sklearn" - name: Lint with flake8 run: | - pip install flake8 # 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: Install POT + run: | + pip install -e . + - name: Run tests + run: | + python -m pytest -v test/ ot/ --doctest-modules --ignore ot/gpu/ --cov=ot + - name: Upload codecov + run: | + codecov diff --git a/.travis.yml b/.travis.yml index b9cc88f..3f63867 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,7 +34,7 @@ before_install: install: - pip install -r requirements.txt - pip install -U "numpy>=1.14" scipy # for numpy array formatting in doctests - - pip install flake8 pytest "pytest-cov<2.6" + - pip install flake8 pytest "pytest-cov<2.6" codecov - pip install -U "sklearn" - pip install . # command to run tests + check syntax style @@ -45,3 +45,6 @@ script: - flake8 examples/ ot/ test/ - python -m pytest -v test/ ot/ --doctest-modules --ignore ot/gpu/ --cov=ot # - py.test ot test +after_script: + # Need to run from source dir to execute "git" commands + - codecov; @@ -3,6 +3,7 @@ [![PyPI version](https://badge.fury.io/py/POT.svg)](https://badge.fury.io/py/POT) [![Anaconda Cloud](https://anaconda.org/conda-forge/pot/badges/version.svg)](https://anaconda.org/conda-forge/pot) [![Build Status](https://travis-ci.org/PythonOT/POT.svg?branch=master)](https://travis-ci.org/PythonOT/POT) +[![Codecov Status](https://codecov.io/gh/PythonOT/POT/branch/master/graph/badge.svg)](https://codecov.io/gh/PythonOT/POT) [![Documentation Status](https://readthedocs.org/projects/pot/badge/?version=latest)](http://pot.readthedocs.io/en/latest/?badge=latest) [![Downloads](https://pepy.tech/badge/pot)](https://pepy.tech/project/pot) [![Anaconda downloads](https://anaconda.org/conda-forge/pot/badges/downloads.svg)](https://anaconda.org/conda-forge/pot) diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 0000000..1e7b888 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,14 @@ +coverage: + precision: 2 + round: down + range: "70...100" + status: + project: + default: + target: auto + threshold: 0.01 + patch: false + changes: false +comment: + layout: "header, diff, sunburst, uncovered" + behavior: default diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000..1fe37c2 --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,5 @@ +sphinx_gallery +sphinx_rtd_theme +numpydoc +memory_profiler +pillow |