Skip to content

Commit

Permalink
Travis multi-stage build and multi-arch manifest
Browse files Browse the repository at this point in the history
  • Loading branch information
rycus86 committed Nov 6, 2017
1 parent d247dc6 commit b44617f
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 51 deletions.
106 changes: 55 additions & 51 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,58 +1,62 @@
language: python
python:
- '2.7'

sudo:
- required
services:
- docker
install:
- pip install -r requirements.txt
- pip install coveralls
before_script:
- >
for ALTERNATIVE_DOCKERFILE in Dockerfile.*; do
DIFF_LINES=$(diff -y --suppress-common-lines Dockerfile $ALTERNATIVE_DOCKERFILE | wc -l)
if [ "$DIFF_LINES" -ne "1" ]; then
echo "$ALTERNATIVE_DOCKERFILE has $DIFF_LINES lines different then the main Dockerfile, expected only one."
exit 1
fi
done
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
- chmod +x ./cc-test-reporter
- ./cc-test-reporter before-build
script:
# python tests
- PYTHONPATH=src python -m coverage run --branch --source=src -m unittest discover -s tests -v
after_success:
# docker build
- docker run --rm --privileged multiarch/qemu-user-static:register --reset
- docker build -t googleplay-proxy:$DOCKER_TAG -f $DOCKERFILE .
# push docker image
- >
if [ "$DOCKER_PUSH" == "yes" ] && [ "$TRAVIS_BRANCH" == "master" ]; then
docker login -u="rycus86" -p="$DOCKER_PASSWORD"
docker tag googleplay-proxy:$DOCKER_TAG rycus86/googleplay-proxy:$DOCKER_TAG
docker push rycus86/googleplay-proxy:$DOCKER_TAG
else
echo 'Not pushing to Docker Hub'
fi
# coverage reports
- coveralls
- python -m coverage report -m
- python -m coverage xml
- >
if [ "$SKIP_CC" != "true" ]; then
./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
echo 'Test report submitted'
else
echo 'Not submitting test report'
fi
env:
matrix:
- DOCKER_TAG=latest DOCKERFILE=Dockerfile
- DOCKER_TAG=armhf DOCKERFILE=Dockerfile.armhf DOCKER_PUSH=yes SKIP_CC=true
- DOCKER_TAG=aarch64 DOCKERFILE=Dockerfile.aarch64 DOCKER_PUSH=yes SKIP_CC=true
global:
- secure: Y53K98+ezo/doSpBf8aIdjo2fypVe2U5gL713MBmZKSHDGSUOjB/IFoFtw8yJy+lUEeQT0MjidLxr8QQJRtqrbbH9X3aPgViYIE2UpkKvfKcz2ugEZY56KKeVJsUrta/ZUEeQycHuL2sTG68WK9KcEi8lAkrVxKDqkwlB0LPj+h9Hbafrlkco7zaUtTJmAGC4AWkoYBfQL09GPenSm5TNMOV19He/8ePBAIbiQNGtd0YbPX7U/iRxnBLQ+FKaD9S+QfBTDaav7H6nW5U+zGTqdJEfiS2ZS+CJpLBSOHxDhtYKT1WmVT+c+gCgsSDlFVCVYXOHOxFzAibxFRNw/4c3cB6/eM06M8s+EhuDx/pOdIsUA6rgdsjGt4qsrmtBFBzw8R8Nyuul2OfpOwEYtAFoPAak4uUe8yGuJ7d4Nv0Tjpog4iU2cUChEc0DVSqMLPUnb71JkpR/SVJYGNfq/6rfx4/7IfYSs0e3wDDyrVRyV/rCc6hRCQjJg2WI5RKirmv7lSIrRS9+I6sfm6RoEn3LuUahJbvy4a+LPJAJK7WHQqJMF7NVUtctkqZ/IX0ojULTeQvTaayy7I1hi7OBnPwJC8RE+MFl6Je+BeSVvSlPPgdjEdE7sQT/6x9yPZn/QekdOhxaKb2sDFf5iOrZfIsUKGj6g/NzGX2A//Ws898Wfc=
- secure: IRDFso5obsYy79n5ms1+R8q1A5Zsj9B6Mb6Wlilsr1dxp/bHq6SmtBX/d1gt7ZDCd+n7E7Kr+G3XpyzbNbJWsKVaoLXhEZpRFSKxrVEPZKzsDTbPCTKmqtwv0X9wTMHqtLrYZejP0V+2hmcM0XQKwlBI0Tg6FNIXnzzgBjB27FUfRH7Hr6frMnDAfsf126bz9uxeipKaQFELMkFVMQTsZPgO27C1tiW1krxki1Qir59/6iWPj/G5L8GA2meIbRa4fLbjIeAVhTzgal2sE5TZbOubNxt7fPYlHThoV+JgOXQo83R2zCVn3Dhz/DW2DzfgGqVC5JbEmtKdG6RT0zKrr9Gr+g3US3SHwwlm75qM0bL7hhL/FTllWc9RNXCYI1/E1WYPVVdZ+pZDWp+6t1idEVZ6OJS30JV4ix+UAGMLeVqCMf1+NpXcVrUZKiqelkY71l1IFdAOm036Uy8EPP1j8LBIJqaFxLb7d2vftXMOdIxURPbg7gUQ7ajzx3LPmILShnuUr9W9kvAcbeT5SdU8Wio1zYmX3EAC8bDM5KUCFHNOtkrd4l1fEIYrRJNI1MSHIMUdOxCSM5rATEtf5vitIrfX9Xb0kYZQ9mL3Mb1mk76AuKxksRTDdNEDBR1KgdRTvUndhS0c31m6jeYnCgnhvbksqzk+tYmow71ljv1dqLc=
- secure: vp1Djv1xRcEZjlAAQPoXm1FLt3iXzHNYynS7epFEY4ZdaCeyzRgNEc7ThcQY2pqdr6kncJ5RaFCvuyOxVLGEbwNm0R7zRr4RkNosJvoR6zM/0LHo5PAMlibFjJqPmAy6tM5TK8ea+LXABwqiZr+lRF4ffEjWdCn2/RwErz7jAxAc/quUaJZPG3SEHJGRvLN/GrSqmUAqlNvbUDkaLSMUtURdclPyZGr6GoImK5KZ7J8rWadl6nmHHiokepEextxg3VO3MioZm+ajfddKmhliqeHX5wHQvlOVd+dD7okpUeRJ2RsxribjogK7Y35u1Up3NYkQ46f4aBDRpIeGsGg0W/+Hk2YJ5AQB/vCY6UsoLoGizyWxGLRKW0VBn8C33PDCTXtIXLwRd3ZF3d+FSHYwf0k2S7gBQbasuPhzFMDvPRVbtQENJgI7ftkrlItFsTetmCpsrPuEZUgTUsAB+BurnFI2lB4UWBfYHZ/x7Y9MBOp50lH1RMLeWLBaecuGPNlw6Ywjp4suHrBunKdTWlE7kYhd5nDa3uXq+Srq+EczI+zRTyMFOkZnvYE2Qsdc2zbb2tXxRypDcvTBD11XIKM138UVS9jStD7yyaPSUpe+DWBRou6/HBfz+dNnVLQuPeoLngR6DYSIpSBSBDJ8psZNg7FqromvMF8a5O0lTIojPfE=
install: skip

jobs:
include:
- stage: test
script:
# prepare python modules
- pip install -r requirements.txt
- pip install coveralls
# prepare reporter
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
- chmod +x ./cc-test-reporter
# python tests
- PYTHONPATH=src python -m coverage run --branch --source=src -m unittest discover -s tests -v
# coverage reports
- python -m coverage report -m
- python -m coverage xml
- |
if [[ "$(python --version 2>&1)" = *2.7* ]]; then
coveralls || exit 0
./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT || exit 0
fi
- &deploy-stage
stage: deploy
if: branch = master
script:
- docker run --rm --privileged multiarch/qemu-user-static:register --reset
- docker build -t googleplay-proxy:$DOCKER_TAG -f $DOCKERFILE .
- docker tag googleplay-proxy:$DOCKER_TAG rycus86/googleplay-proxy:$DOCKER_TAG
- docker login -u="rycus86" -p="$DOCKER_PASSWORD"
after_success:
- docker push rycus86/googleplay-proxy:$DOCKER_TAG
env:
- DOCKER_TAG=amd64
- DOCKERFILE=Dockerfile

- <<: *deploy-stage
env:
- DOCKER_TAG=armhf
- DOCKERFILE=Dockerfile.armhf

- <<: *deploy-stage
env:
- DOCKER_TAG=aarch64
- DOCKERFILE=Dockerfile.aarch64

- stage: manifest
if: branch = master
script:
- docker login -u="rycus86" -p="${DOCKER_PASSWORD}"
- curl -fsSL https://github.com/estesp/manifest-tool/releases/download/v0.7.0/manifest-tool-linux-amd64 > ./manifest-tool
- chmod +x ./manifest-tool
- ./manifest-tool push from-spec manifest.yml
19 changes: 19 additions & 0 deletions manifest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
image: rycus86/googleplay-proxy:latest
manifests:
-
image: rycus86/googleplay-proxy:amd64
platform:
architecture: amd64
os: linux
-
image: rycus86/googleplay-proxy:armhf
platform:
architecture: arm
variant: v7
os: linux
-
image: rycus86/googleplay-proxy:aarch64
platform:
architecture: arm64
variant: v8
os: linux

0 comments on commit b44617f

Please sign in to comment.