Add deb package to Travis CI (#318)

* Script for building deb package on Travis

* Adding deb build to Travis CI configuration

* Remove superflous install step from deb build

* Add permissions to execute build script for deb package.

* Update deb build environment to use Ubuntu 18.04

* Install the deb package as part of build process

* Fix deb location for installation test

* Remove installation test

Latest Ubuntu available on Travis doesn't meet minimum required version of pyside2.

* Fix pyside dependencies to make them more accurate.

* Switch deb build to Ubuntu 20.04

* Add installation and runtime test.

* Fix location of deb package for upload to bintray.

* Separate out testing from build script.

* Make the script output visible in Travis CI logs.

* Fix permissons for test script.
This commit is contained in:
Daniel Wróbel 2020-06-01 22:41:53 +02:00 committed by GitHub
parent 692143b0a1
commit d4ac455624
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 44 additions and 0 deletions

View File

@ -11,6 +11,10 @@ jobs:
dist: xenial
os: linux
env: BUILD_DESTINATION=snapcraft
- language: minimal
dist: focal
os: linux
env: BUILD_DESTINATION=deb
- language: python
os: linux
dist: xenial
@ -21,12 +25,16 @@ script:
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then python3 buildPy2app.py py2app ; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "snapcraft" ]; then sudo snapcraft cleanbuild ; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "appimage" ]; then travis/appimage-script.sh ; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "deb" ]; then travis/deb-script.sh ; fi
install:
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then travis/macos-install.sh ; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "snapcraft" ]; then travis/snapcraft-install.sh ; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "appimage" ]; then sudo apt-get install libxkbcommon-x11-0 ; fi
after_success:
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "deb" ]; then travis/deb-installation-test.sh ; fi
before_deploy:
- ls -al
- export VER="$(cat syncplay/__init__.py | awk '/version/ {gsub("\047", "", $3); print $NF}')"
@ -35,6 +43,7 @@ before_deploy:
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then travis/macos-deploy.sh ; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "snapcraft" ]; then mv syncplay_build_amd64.snap dist_bintray/syncplay_${VER}_amd64.snap ; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "appimage" ]; then travis/appimage-deploy.sh ; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "deb" ]; then mv /tmp/syncplay.deb dist_bintray/syncplay_${VER}.deb ; fi
deploy:
skip_cleanup: true

View File

@ -0,0 +1,8 @@
#!/bin/sh
set -x
set -e
sudo apt install /tmp/syncplay.deb -y
syncplay --no-gui
sudo apt remove syncplay

27
travis/deb-script.sh Executable file
View File

@ -0,0 +1,27 @@
#!/bin/sh
set -x
set -e
mkdir -p /tmp/syncplay/DEBIAN
echo "Package: syncplay
Version: "$(sed -n -e "s/^.*version = //p" syncplay/__init__.py | sed "s/'//g")""$(git describe --exact-match --tags HEAD &>/dev/null && echo -git-$(date -u +%y%m%d%H%M))"
Architecture: all
Maintainer: <dev@syncplay.pl>
Depends: python3 (>= 3.4), python3-pyside2.qtwidgets, python3-pyside2.qtcore, python3-twisted (>= 16.4.0), python3-certifi, mpv (>= 0.23) | vlc (>= 2.2.1)
Homepage: https://syncplay.pl
Section: web
Priority: optional
Description: Solution to synchronize video playback across multiple instances of mpv, VLC, MPC-HC and MPC-BE over the Internet.
Syncplay synchronises the position and play state of multiple media players so that the viewers can watch the same thing at the same time. This means that when one person pauses/unpauses playback or seeks (jumps position) within their media player then this will be replicated across all media players connected to the same server and in the same 'room' (viewing session). When a new person joins they will also be synchronised. Syncplay also includes text-based chat so you can discuss a video as you watch it (or you could use third-party Voice over IP software to talk over a video)." \
> /tmp/syncplay/DEBIAN/control
echo "#!/bin/sh
py3clean -p syncplay
"
> /tmp/syncplay/DEBIAN/prerm
chmod 555 /tmp/syncplay/DEBIAN/prerm
make install DESTDIR=/tmp/syncplay
dpkg -b /tmp/syncplay/