diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9ea4a81 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +/build + +/Dockerfile +/push-docker-image.sh diff --git a/.travis.yml b/.travis.yml index 81a0719..9087d87 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,33 +1,37 @@ language: cpp - os: - - linux - - osx - +- linux +- osx compiler: - - gcc - - clang - +- gcc +- clang addons: apt: sources: - - ubuntu-toolchain-r-test + - ubuntu-toolchain-r-test packages: - - cmake - + - cmake before_install: - - export LD_LIBRARY_PATH=$(if [[ $CXX == "clang++" ]]; then echo -n '/usr/local/clang/lib'; fi) - +- export LD_LIBRARY_PATH=$(if [[ $CXX == "clang++" ]]; then echo -n '/usr/local/clang/lib'; + fi) before_script: - - mkdir build - - cd build - - cmake .. - +- mkdir build +- cd build +- cmake .. script: - - make -j4 - - ctest --verbose - +- make -j4 +- ctest --verbose +- docker build -t ad-freiburg/pfaedle . +deploy: + on: + branch: master + provider: script + script: bash push-docker-image.sh notifications: email: on_success: never on_failure: always +env: + global: + - secure: W60bRWv9u28UFjmt1iO5ELtPBvUNkAPqiwwxd+boy7BazAJ0fUUBZoEpnsgv8pqKWJV6VMUvknP4taU5a6NM+3aRHuCZOjVC42Rs8oDGJoXrhmH9ZzOOp2nDnHy9hqrtRKJrYQUww+s7UjBpWcaorqHvo5iWNrt9OulKM+V2u6IQI3xI1bPoaVhK/EnHHFAWe52v0KOkaSjguL5zj7xZqCeaZKmX9PsiQdqQJVtX2zsdF/aDkDvhkAl4SxeVKrFEVDV4gPx7yqGC/uQ6YJrQXigqpWWL6oZ1cxsg2HWqLZyAYN8tIWcnaAW8+PVYLfH1iTDb6fnokD4DPpVfULz4dzqOnTuG+Qd97U2BVDJN+LdxK2d8RZ1KLAWNbFGBlkY/8zpMAtV/xhGk2vHg/pj6ZPUPncNlOzUepASw5yCY7H6SOH1NgzNNSn+Fg3Q+6eUoYWp5jrpejBcwO/tikRCfGOSNyEKTC+1joRNwySeLjTcLDcaO3+EJL64YjIKW1+YwVFopq5DKRhzjSyO+dUryA5+l+nT499BC9dxA7SvQ/tLwMs3uPlVhSDUvkH6DxiWIJQEYmTZIEA4JmLjdBFDB9FaApubvn5wRIlL07Dbq+t3XxMciWeLU3H2IQzlGPQpIbqB93L8yc6eH5Fq2Gu4HN5lmpJC3ZLpZOEqNk1kcFzo= + - secure: b10JKrMacKD+C8yGHPiOYP84ykXqBFiwm2wkcKn9SkGO6bDCtRIM+/eYMN64wQVD54Vwc/rfxqCRN6ckdAgw1zrtBdlRLz1krdwsdb7RuXJvTTTu3bd8CrtlsvcVh40vcItcFAQQKhKrPF/iDajbXm4GaVcoiqV8i8inhhfg063guC22o3D76J3xFmwyhNGv0QZuK7xG0O2h+mflU/LE8FuXrVO4+1QmvwJ9JRgBnz5F8jrEuZWipp3gJBVnpYHv4ZAy5r52zQ3iPEkji7Y6/GjvxYnjc08QM998I3SSlUuW4quiEPJFTGxK9w/UV34c0DJhzluJ3TGTz+RkhejIDUcNiKqFKWZCzCwzcx5f96RmTh7MTHulB7zTkK0hzSSPFjrYrRrkN/FCwMrHaLs1H3SQbXiB2Ga2pnfaOVfCbM5KraZHlk2xHUIqVHkhyetETBW76d4g6vxjNoe++siyx+eUW2VMj7Y+6c1HQPceGi+jpl9pJK6ZXKfVpfWjFj29qqnv7lNjoI3PXGllswDV4KxP/A5A4MBqHAcVOFEdTro5EReUhepyNYM7lUaS//Wa6DzE6US13bVpIr4fC+bKUf8XizfGp+f9TSc+Shl0J6asejxIbgQRCopTJd805xAFoCsoK1yt/sZIplBO/mjaBjLc9Y1+A04VH5FQWl92rHQ= diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5012f35 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM debian:buster-slim AS builder + +WORKDIR /app + +RUN apt-get update && \ + apt-get install -y g++ cmake git + +ADD . /app +RUN mkdir build && \ + cd build && \ + cmake .. && \ + make -j && \ + pwd && \ + make install + +FROM debian:buster-slim + +RUN apt-get update && \ + apt-get install -y libgomp1 && \ + rm -rf /var/lib/apt/lists/* + +COPY --from=builder /usr/local/etc/pfaedle /usr/local/etc/pfaedle +COPY --from=builder /usr/local/bin/pfaedle /usr/local/bin/pfaedle + +ENTRYPOINT ["/usr/local/bin/pfaedle"] diff --git a/README.md b/README.md index c21c924..a860d35 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,20 @@ input GTFS feed and the input configuration. This can be used to avoid parsing (for example) the entire `planet.osm` on each run. +## via Docker + +You can use the [`ad-freiburg/pfaedle` Docker image](https://hub.docker.com/repository/docker/ad-freiburg/pfaedle) by mounting the OSM & GTFS data into the container: + +```shell +docker run -i --rm \ + # mount OSM data + --volume /path/to/osm/data:/osm \ + # mount GTFS data + --volume /path/to/gtfs/data:/gtfs \ + # tell pfaedle where to find the data + pfaedle -x /osm/osm-data.xml -i /gtfs +``` + ## Debugging The following flags may be useful for debugging: diff --git a/push-docker-image.sh b/push-docker-image.sh new file mode 100644 index 0000000..af6f3fb --- /dev/null +++ b/push-docker-image.sh @@ -0,0 +1,6 @@ +#!/bin/sh +set -ex +set -o pipefail + +echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin +docker push adfreiburg/pfaedle