summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Gramfort <alexandre.gramfort@m4x.org>2020-04-21 12:26:23 +0200
committerGitHub <noreply@github.com>2020-04-21 12:26:23 +0200
commite5931823630010bb5a99586accf09606b0a3bf90 (patch)
tree3fb445a4eb86014686d71c6a17b929caf8afe655
parent3ade772179eb0405ae6bc70cfc5e701b70d70e89 (diff)
parent3eed3cad36ec5f5691dc029853bc36bfad5ee389 (diff)
Doc ci build (#145)
add codecov + circle ci to upload website + activate github actions for testing
-rw-r--r--.circleci/artifact_path1
-rw-r--r--.circleci/config.yml137
-rw-r--r--.github/workflows/main.yml12
-rw-r--r--.github/workflows/pythonpackage.yml24
-rw-r--r--.travis.yml5
-rw-r--r--README.md1
-rw-r--r--codecov.yml14
-rw-r--r--docs/requirements.txt5
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;
diff --git a/README.md b/README.md
index 931a252..64630e6 100644
--- a/README.md
+++ b/README.md
@@ -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