Sfoglia il codice sorgente

Travis CI -> GitHub Actions

Kentaro Wada 5 anni fa
parent
commit
0bce275b4a
2 ha cambiato i file con 149 aggiunte e 140 eliminazioni
  1. 149 0
      .github/workflows/main.yml
  2. 0 140
      .travis.yml

+ 149 - 0
.github/workflows/main.yml

@@ -0,0 +1,149 @@
+name: CI
+
+on: [push]
+
+jobs:
+  build:
+
+    runs-on: ${{ matrix.os }}
+    strategy:
+      matrix:
+        os: [macOS-latest, ubuntu-latest]
+        PYTEST_QT_API: [pyqt5, pyqt4v2, pyside2]
+        PYTHON_VERSION: ['2.7', '3.6']
+        exclude:
+          - os: macOS-latest
+            PYTEST_QT_API: pyqt4v2
+          - os: macOS-latest
+            PYTEST_QT_API: pyside2
+          - PYTHON_VERSION: '3.6'
+            PYTEST_QT_API:  pyqt4v2
+
+    steps:
+    - uses: actions/checkout@v1
+
+    - name: Update submodules
+      run: |
+        git submodule update --init --recursive
+
+    - name: Install system dependencies
+      run: |
+        if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then
+          sudo apt-get install -y coreutils
+          sudo apt-get install -y xvfb herbstluftwm
+        else
+          brew install coreutils
+          brew cask install xquartz
+        fi
+
+    - name: Set up Miniconda
+      run: |
+        if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then
+          curl -L -o miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
+        else
+          curl -L -o miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
+        fi
+        bash miniconda.sh -b -p $HOME/miniconda
+        rm -f miniconda.sh
+        export PATH="$HOME/miniconda/bin:$PATH"
+        conda config --set always_yes yes --set changeps1 no
+        conda update -q conda
+        conda info -a
+
+    - name: Set up Python
+      env:
+        PYTHON_VERSION: ${{ matrix.PYTHON_VERSION }}
+      run: |
+        export PATH="$HOME/miniconda/bin:$PATH"
+        conda install -y python=$PYTHON_VERSION
+        which python
+        python --version
+        pip --version
+
+    - name: Install dependencies
+      run: |
+        export PATH="$HOME/miniconda/bin:$PATH"
+        if [ "${{ matrix.PYTEST_QT_API }}" = "pyside2" ]; then
+          if [ "${{ matrix.PYTHON_VERSION }}" = "2.7" ]; then
+            conda install -y 'pyside2!=5.12.4' -c conda-forge
+          else
+            conda install -y pyside2 -c conda-forge
+          fi
+        elif [ "${{ matrix.PYTEST_QT_API }}" = "pyqt4v2" ]; then
+          conda install -y pyqt=4 -c conda-forge
+        else  # pyqt5
+          conda install -y pyqt=5
+        fi
+        conda install -y help2man
+        pip install flake8 pytest pytest-qt
+
+    - name: Install main
+      run: |
+        export PATH="$HOME/miniconda/bin:$PATH"
+        pip install .
+
+    - name: Lint with flake8
+      run: |
+        export PATH="$HOME/miniconda/bin:$PATH"
+        flake8 .
+
+    - name: Test with pytest
+      env:
+        PYTEST_QT_API: ${{ matrix.PYTEST_QT_API }}
+      run: |
+        # open virtual display
+        if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then
+          export DISPLAY=:99.0
+          /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1920x1200x24 -ac +extension GLX +render -noreset
+          (herbstluftwm )&
+        else
+          (sudo Xvfb :99 -ac -screen 0 1024x768x8 )&
+        fi
+        # run test
+        export PATH="$HOME/miniconda/bin:$PATH"
+        MPLBACKEND='agg' pytest tests -m 'not gpu'
+
+    - name: Run examples
+      env:
+        MPLBACKEND: agg
+      run: |
+        export PATH="$HOME/miniconda/bin:$PATH"
+
+        labelme --help
+        labelme --version
+        (cd examples/primitives && labelme_json_to_dataset primitives.json && rm -rf primitives_json)
+        (cd examples/tutorial && rm -rf apc2016_obj3_json && labelme_json_to_dataset apc2016_obj3.json && python load_label_png.py && git checkout -- .)
+        (cd examples/semantic_segmentation && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .)
+        (cd examples/instance_segmentation && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .)
+        (cd examples/video_annotation && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .)
+
+        pip install lxml  # for bbox_detection/labelme2voc.py
+        (cd examples/bbox_detection && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .)
+
+        pip install cython && pip install pycocotools  # for instance_segmentation/labelme2coco.py
+        (cd examples/instance_segmentation && rm -rf data_dataset_coco && ./labelme2coco.py data_annotated data_dataset_coco --labels labels.txt && git checkout -- .)
+
+    - name: Run pyinstaller
+      run: |
+        if [ "${{ matrix.PYTEST_QT_API }}" = "pyqt5" -a "${{ matrix.PYTHON_VERSION }}" = "3.6" ]; then
+          export PATH="$HOME/miniconda/bin:$PATH"
+
+          # # Cleanup
+          # pip uninstall -y $PIP_DEPENDENCIES
+
+          # # https://github.com/wkentaro/labelme/issues/183
+          # if [ $TRAVIS_OS_NAME = "osx" ]; then
+          #   pip uninstall -y Pillow
+          #   conda install -y Pillow
+          # fi
+
+          # Build the standalone executable
+          pip install 'pyinstaller!=3.4'  # 3.4 raises error
+
+          # # numpy 1.17 raises error
+          # # See https://github.com/wkentaro/labelme/issues/465
+          # pip install 'numpy<1.17'
+
+          pyinstaller labelme.spec
+          dist/labelme --version
+        fi

+ 0 - 140
.travis.yml

@@ -1,140 +0,0 @@
-language: generic
-
-cache:
-  - pip
-
-sudo: required
-
-dist: trusty
-
-branches:
-  only:
-    - master
-    - /v\d+\.\d+.\d+/
-
-notifications:
-  email: false
-
-env:
-  global:
-    # used by ci-helpers
-    - SETUP_XVFB=true
-    - PIP_DEPENDENCIES='hacking pytest pytest-qt'
-
-    - MPLBACKEND=TkAgg  # for osx
-matrix:
-  include:
-    - os: osx
-      env:
-        - PYTEST_QT_API=pyqt5
-        - PYQT_PACKAGE='pyqt=5'
-        - PYTHON_VERSION=3.6
-        - RUN_PYINSTALLER=true
-    - os: linux
-      dist: trusty
-      env:
-        - PYTEST_QT_API=pyqt4v2
-        - PYQT_PACKAGE='pyqt=4'
-        - PYTHON_VERSION=2.7
-    - os: linux
-      dist: trusty
-      env:
-        - PYTEST_QT_API=pyside2
-        - CONDA_CHANNELS='conda-forge'
-        - PYQT_PACKAGE='pyside2!=5.12.4'
-        - PYTHON_VERSION=2.7
-    - os: linux
-      dist: trusty
-      env:
-        - PYTEST_QT_API=pyside2
-        - CONDA_CHANNELS='conda-forge'
-        - PYQT_PACKAGE='pyside2'
-        - PYTHON_VERSION=3.6
-    - os: linux
-      dist: trusty
-      env:
-        - PYTEST_QT_API=pyqt5
-        - PYQT_PACKAGE='pyqt=5'
-        - PYTHON_VERSION=2.7
-    - os: linux
-      dist: trusty
-      env:
-        - PYTEST_QT_API=pyqt5
-        - PYQT_PACKAGE='pyqt=5'
-        - PYTHON_VERSION=3.6
-        - RUN_PYINSTALLER=true
-
-install:
-  # Setup X
-  - |
-    if [ $TRAVIS_OS_NAME = "linux" ]; then
-      sudo apt-get update
-      # Xvfb / window manager
-      sudo apt-get install -y xvfb herbstluftwm
-    elif [ $TRAVIS_OS_NAME = "osx" ]; then
-      brew cask install xquartz
-    fi
-
-  # Setup miniconda
-  - git clone --depth 1 git://github.com/astropy/ci-helpers.git
-  - CONDA_DEPENDENCIES=$PYQT_PACKAGE source ci-helpers/travis/setup_conda.sh
-  - source activate test && export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
-  - pip install .
-  - rm -rf ci-helpers miniconda.sh
-
-before_script:
-  - if [ $TRAVIS_OS_NAME = "linux" ]; then (herbstluftwm )& fi
-  - if [ $TRAVIS_OS_NAME = "osx" ]; then (sudo Xvfb :99 -ac -screen 0 1024x768x8 )& fi
-  - sleep 1
-
-script:
-  # Run flake8
-  - flake8 examples labelme setup.py tests
-
-  # Run help2man
-  - conda install -y help2man
-
-  # Run pytest
-  - pytest -v tests
-
-  - labelme --help
-  - labelme --version
-
-  # Run examples
-  - (cd examples/primitives && labelme_json_to_dataset primitives.json && rm -rf primitives_json)
-  - (cd examples/tutorial && rm -rf apc2016_obj3_json && labelme_json_to_dataset apc2016_obj3.json && python load_label_png.py && git checkout -- .)
-  - (cd examples/semantic_segmentation && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .)
-  - (cd examples/instance_segmentation && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .)
-  - (cd examples/video_annotation && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .)
-
-  - pip install lxml  # for bbox_detection/labelme2voc.py
-  - (cd examples/bbox_detection && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .)
-
-  - pip install cython && pip install pycocotools  # for instance_segmentation/labelme2coco.py
-  - (cd examples/instance_segmentation && rm -rf data_dataset_coco && ./labelme2coco.py data_annotated data_dataset_coco --labels labels.txt && git checkout -- .)
-
-  # Run pyinstaller
-  - |
-    if [ "$RUN_PYINSTALLER" = "true" ]; then
-      # Cleanup
-      pip uninstall -y $PIP_DEPENDENCIES
-
-      # https://github.com/wkentaro/labelme/issues/183
-      if [ $TRAVIS_OS_NAME = "osx" ]; then
-        pip uninstall -y Pillow
-        conda install -y Pillow
-      fi
-
-      # Build the standalone executable
-      pip install 'pyinstaller!=3.4'  # 3.4 raises error
-
-      # numpy 1.17 raises error
-      # See https://github.com/wkentaro/labelme/issues/465
-      pip install 'numpy<1.17'
-
-      pyinstaller labelme.spec
-      dist/labelme --version
-    fi
-
-after_script:
-  - true  # noop