inkstitch/.travis.yml

157 wiersze
6.6 KiB
YAML

language: python
virtualenv:
# We need this for PyGObject.
system_site_packages: true
matrix:
# only pass/fail the build based on the lint run, since the build takes
# a long time and its failure doesn't depend on the code anyway
fast_finish: true
allow_failures:
env: BUILD=true
include:
# always lint on every commit
- python: 2.7
env: LINT=true
sudo: false
- python: 2.7
sudo: required
env: BUILD=linux
if: tag =~ ^v[0-9.]+$ OR branch != master
- python: 2.7
sudo: required
env: BUILD=windows
if: tag =~ ^v[0-9.]+$ OR branch != master
branches:
except:
- /^dev-build-/
cache: pip
install:
- |
if [ -n "$BUILD" ]; then
# Need this for inkex.py and friends
wget -q https://inkscape.org/en/gallery/item/11254/inkscape-0.92.2.tar.bz2
tar jxf inkscape-0.92.2.tar.bz2
rm inkscape-0.92.2.tar.bz2
fi
if [ "$BUILD" = "linux" ]; then
# For some bizarre reason, this build has been failing due to the
# key for the mongodb repo expiring. Maybe Travis includes the
# mongodb repo by default...?
sudo rm /etc/apt/sources.list.d/mongodb*.list
# for shapely
sudo apt-get install libgeos-dev
# for wxPython
sudo apt-get install glib-networking
# for embroidermodder/libembroidery
sudo apt-get install swig python-dev
# This is the same as the pypi module PyGObject. We can't just do
# "pip install PyGObject" because it depends on a version of
# libgirepository1.0-dev that doesn't exist in Trusty.
sudo apt-get install python-gi python-gi-cairo libgirepository1.0-dev
# wxPython doen't publish linux wheels in pypi
wget https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-14.04/wxPython-4.0.0b2-cp27-cp27mu-linux_x86_64.whl
pip install wxPython-4.0.0b2-cp27-cp27mu-linux_x86_64.whl
# We can't use the shapely wheel because it includes the geos
# library but with a weird file name. Details:
# https://github.com/pyinstaller/pyinstaller/blob/61b1c75c2b0469b32d114298a63bf60b8d597e37/PyInstaller/hooks/hook-shapely.py#L34
pip install --no-binary shapely -r requirements.txt
pip install pyinstaller
elif [ "$BUILD" = "windows" ]; then
set -x
sudo add-apt-repository ppa:ubuntu-wine/ppa -y
sudo apt-get update -qq
export DISPLAY=:99.0
sh -e /etc/init.d/xvfb start
sleep 3
sudo apt-get install -y wine
export WINEDEBUG=-all
wget -q https://github.com/lexelby/inkstitch-build-objects/releases/download/v1.0.0/windows-libembroidery.tar.gz
tar zxf windows-libembroidery.tar.gz
rm windows-libembroidery.tar.gz
wget -q http://download.microsoft.com/download/1/1/1/1116b75a-9ec3-481a-a3c8-1777b5381140/vcredist_x86.exe
wine vcredist_x86.exe /q
wget -q https://www.python.org/ftp/python/2.7.14/python-2.7.14.msi --output-document=python.msi
wine msiexec /i python.msi /qn TARGETDIR=C:\\Python
wine c:\\Python\\python.exe c:\\Python\\scripts\\pip.exe install pyinstaller --upgrade
wine c:\\Python\\python.exe c:\\Python\\scripts\\pip.exe install setuptools --upgrade
wget -q https://github.com/lexelby/inkstitch-build-objects/releases/download/v1.0.0/Shapely-1.6.3-cp27-cp27m-win32.whl
wine c:\\Python\\python.exe c:\\Python\\scripts\\pip.exe install Shapely-1.6.3-cp27-cp27m-win32.whl
wine c:\\Python\\python.exe c:\\Python\\scripts\\pip.exe install -r requirements.txt
set +x
elif [ -n "$LINT" ]; then
pip install flake8
fi
before_script:
- "echo LINT: $LINT BUILD: $BUILD"
script:
- |
if [ -n "$LINT" ]; then
flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics --exclude=embroidermodder
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics --exclude=embroidermodder
elif [ "$BUILD" = "linux" ]; then
(
cd embroidermodder/experimental
qmake swigpython.pro
make
)
make dist
elif [ "$BUILD" = "windows" ]; then
# work around some bug... pyinstaller? shapely? not sure.
cp $(winepath 'C:\Python\lib\site-packages\shapely\DLLs\geos_c.dll') $(winepath 'C:\Python\lib\site-packages\shapely\DLLs\geos.dll')
make dist
else
true
fi
notifications:
on_success: never
on_failure: never
before_deploy:
- git tag -f dev-build-${TRAVIS_BRANCH}
- git push -f https://${TRAVIS_REPO_SLUG%/*}:${GITHUB_API_KEY}@github.com/${TRAVIS_REPO_SLUG}.git dev-build-${TRAVIS_BRANCH}
deploy:
- provider: releases
api_key:
secure: pYORXHcn0hPcMIo6+brVE+wYce272H4COp1iXmPvBUz64MAX0Bdm5UX6cTAvzwNd9Hhi2nnWebaoS5AiPelbZgQoZJXsy4whrp7+ZrkQZkhGcqsSqXN6j5k5xdGeFX4k37T7eGkFyajTAdIWB3locHcikKN6N6PnyCPxGD/xuxiD1fJSVKGqBOptBYsqFtMddKy3aT0nmRG/2pMElq2Fcxozo+rR00j2/3npVoh2VTRt2L0S/DrX3zKT4vi2+AQ1MmKEAfF/YxCPybJGPe+wHz4egs0+PIJYb7pSZL8Ja81IS4v5cmmy/r2la815amyRyXwZXbJwBX8h9wPa7dwGStMvJdUidlqaXjKMsWba3QbD6YHOi0+UOFvWeubCDqXKhqxVAvZyCvXCx2WPlBfGWsJDHK/j2pU5Iul5Jz2Zsa3PLYA3UeGWVy081SZNuklNdccKGTokntFnR3pGM/jDN/JK7RkvuPM5qQqn3gludQnrdo/Kw0I77hAEDasgUyO8cweSfyqOXBN0dkbLjfBVRslRRRuC5fV9MIqFvLclaPfMlxsSTdDO4MGJRsF7VvFySBdh0xK7Rm+Vb9jYjCR3FV+b8TRsnY0eD2eFM+rmQt/OYdNIs6emVrTXCcAIzq4JoKZdFDIDDRsiztGSjIBB0+rSXmiUMtCiUo5GS/7zxGs=
file:
- '*.tar.gz'
file_glob: true
skip_cleanup: true
on:
tags: true
all_branches: true
condition: '(-n $BUILD) && ($TRAVIS_TAG =~ ^v[0-9.]+$)'
- provider: releases
api_key:
secure: pYORXHcn0hPcMIo6+brVE+wYce272H4COp1iXmPvBUz64MAX0Bdm5UX6cTAvzwNd9Hhi2nnWebaoS5AiPelbZgQoZJXsy4whrp7+ZrkQZkhGcqsSqXN6j5k5xdGeFX4k37T7eGkFyajTAdIWB3locHcikKN6N6PnyCPxGD/xuxiD1fJSVKGqBOptBYsqFtMddKy3aT0nmRG/2pMElq2Fcxozo+rR00j2/3npVoh2VTRt2L0S/DrX3zKT4vi2+AQ1MmKEAfF/YxCPybJGPe+wHz4egs0+PIJYb7pSZL8Ja81IS4v5cmmy/r2la815amyRyXwZXbJwBX8h9wPa7dwGStMvJdUidlqaXjKMsWba3QbD6YHOi0+UOFvWeubCDqXKhqxVAvZyCvXCx2WPlBfGWsJDHK/j2pU5Iul5Jz2Zsa3PLYA3UeGWVy081SZNuklNdccKGTokntFnR3pGM/jDN/JK7RkvuPM5qQqn3gludQnrdo/Kw0I77hAEDasgUyO8cweSfyqOXBN0dkbLjfBVRslRRRuC5fV9MIqFvLclaPfMlxsSTdDO4MGJRsF7VvFySBdh0xK7Rm+Vb9jYjCR3FV+b8TRsnY0eD2eFM+rmQt/OYdNIs6emVrTXCcAIzq4JoKZdFDIDDRsiztGSjIBB0+rSXmiUMtCiUo5GS/7zxGs=
file:
- '*.tar.gz'
- '*.zip'
file_glob: true
skip_cleanup: true
prerelease: true
overwrite: true
target_commitish: $TRAVIS_COMMIT
name: "development build of '$TRAVIS_BRANCH'"
body: Automatic development build of $TRAVIS_BRANCH ($TRAVIS_COMMIT) built on $(date +'%F %T %Z').
on:
all_branches: true
condition: '(-n $BUILD) && ! ("$TRAVIS_TAG" =~ ^v[0-9.]+$) && ! ("$TRAVIS_BRANCH" = master)'