diff --git a/.travis.yml b/.travis.yml index 7160627..09fdd74 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,17 +15,50 @@ # language: python + python: - - 3.6 + - 3.7 + services: - docker + +before_install: + # Replace all slashes (which are common in branch names) in VERSION with dashes for Docker compatibility + - if [[ "$TRAVIS_BRANCH" == "master" ]]; then + VERSION=latest; + else + VERSION=${TRAVIS_BRANCH//\//-}; + fi + + # Default variables (used by Jenkins) + - '[[ -z "$DOCKERFILE" ]] && export DOCKERFILE=Dockerfile || /bin/true' + - '[[ -z "$IMAGE" ]] && export IMAGE=test || /bin/true' + - '[[ -z "$ARCH" ]] && export ARCH=x86_64 || /bin/true' + - '[[ -z "$VERSION" ]] && export VERSION=jenkins || /bin/true' + install: - - docker build -t max-image-resolution-enhancer . - - docker run -it -d --rm -p 5000:5000 max-image-resolution-enhancer + - docker build -f "$DOCKERFILE" -t quay.io/codait/max-image-resolution-enhancer:"$IMAGE"-"$ARCH"-"$VERSION" . + - docker run -it -d --rm -p 5000:5000 quay.io/codait/max-image-resolution-enhancer:"$IMAGE"-"$ARCH"-"$VERSION" - pip install -r requirements-test.txt + before_script: - flake8 . --max-line-length=127 - bandit -r . --exclude /tests,/training - sleep 30 + script: - pytest tests/test.py + +after_success: + - if [[ "$IMAGE" != "test" && "$TRAVIS_PULL_REQUEST" == "false" ]] && [[ "$TRAVIS_BRANCH" == "master" || "$TRAVIS_BRANCH" == "$TRAVIS_TAG" ]]; then + echo "$DOCKER_PASS_QUAY" | docker login -u "$DOCKER_USER_QUAY" --password-stdin quay.io; + docker push quay.io/codait/max-image-resolution-enhancer:"$IMAGE"-"$ARCH"-"$VERSION"; + fi + +matrix: + include: + - os: linux + env: DOCKERFILE=Dockerfile IMAGE=intel ARCH=x86_64 + - os: linux + arch: arm64 + env: DOCKERFILE=Dockerfile.arm32v7 IMAGE=arm ARCH=arm32v7 diff --git a/Dockerfile.arm32v7 b/Dockerfile.arm32v7 new file mode 100644 index 0000000..0d5bedd --- /dev/null +++ b/Dockerfile.arm32v7 @@ -0,0 +1,26 @@ +FROM quay.io/codait/max-base:arm-arm32v7-v1.4.0 + +RUN sudo apt-get update && sudo apt-get -y install libatlas3-base libhdf5-dev libc-ares-dev libeigen3-dev && sudo rm -rf /var/lib/apt/lists/* + +ARG model_bucket=https://max-cdn.cdn.appdomain.cloud/max-image-resolution-enhancer/1.0.0 +ARG model_file=assets.tar.gz + +RUN wget -nv --show-progress --progress=bar:force:noscroll ${model_bucket}/${model_file} --output-document=assets/${model_file} && \ + tar -x -C assets/ -f assets/${model_file} -v && rm assets/${model_file} + +COPY requirements.txt . +RUN python -m pip install https://www.piwheels.org/simple/tensorflow/tensorflow-1.13.1-cp37-none-linux_armv7l.whl +# Skip tensorflow in requirements.txt due to lack of arm build +RUN grep -v 'tensorflow' requirements.txt | python -m pip install -r /dev/stdin +# need a newer version of numpy for the arm version of tf +RUN pip install numpy==1.20.0 + + +COPY . . + +# check file integrity +RUN sha512sum -c sha512sums.txt + +EXPOSE 5000 + +CMD python app.py