From a8ea1b1d0feef35b2c43462c0fb18c54eb341621 Mon Sep 17 00:00:00 2001 From: Alain ANDRE Date: Tue, 17 Jan 2023 18:47:35 +0100 Subject: [PATCH] Make build available on arm64 --- .env | 2 +- .github/actions/build.sh | 20 +------------------- .github/workflows/main.yml | 2 +- Dockerfile | 29 ++++++++++++++++++++--------- docker-compose.yml | 2 +- 5 files changed, 24 insertions(+), 31 deletions(-) diff --git a/.env b/.env index 2ae96b2a..e5693c34 100644 --- a/.env +++ b/.env @@ -1,3 +1,3 @@ ARCHITECTURE=arm64v8/ -RUBY_VERSION=2.6 +RUBY_VERSION=2.5 ORTOOLS_VERSION=v7.8 # select from https://github.com/google/or-tools/releases diff --git a/.github/actions/build.sh b/.github/actions/build.sh index 8992d10d..3eab09cb 100755 --- a/.github/actions/build.sh +++ b/.github/actions/build.sh @@ -13,25 +13,7 @@ fi IMAGE_NAME=${REGISTRY}/mapotempo-ce/optimizer-ortools:${TAG} -case $ORTOOLS_VERSION in - 'v7.1') - export ORTOOLS_URL="https://github.com/google/or-tools/releases/download/v7.1/or-tools_debian-9_v7.1.6720.tar.gz" - ;; - 'v7.4') - export ORTOOLS_URL="https://github.com/google/or-tools/releases/download/v7.4/or-tools_debian-9_v7.4.7247.tar.gz" - ;; - 'v7.5') - export ORTOOLS_URL="https://github.com/google/or-tools/releases/download/v7.5/or-tools_debian-10_v7.5.7466.tar.gz" - ;; - 'v7.8') - export ORTOOLS_URL="https://github.com/google/or-tools/releases/download/v7.8/or-tools_debian-10_v7.8.7959.tar.gz" - ;; - *) - echo "Unknown OR-Tools version" -esac - -echo "Download asset at ${ORTOOLS_URL}" -docker build --build-arg RUBY_VERSION="2.6" --build-arg ORTOOLS_URL=${ORTOOLS_URL} -f ./Dockerfile -t "${IMAGE_NAME}" . +docker build --build-arg RUBY_VERSION="2.5" --build-arg ORTOOLS_VERSION="${ORTOOLS_VERSION}" -f ./Dockerfile -t "${IMAGE_NAME}" . docker run -d --name optimizer -t "${IMAGE_NAME}" docker exec -i optimizer bash -c "LD_LIBRARY_PATH=/srv/or-tools/lib/ /srv/optimizer-ortools/tsp_simple -time_limit_in_ms 500 -intermediate_solutions -instance_file '/srv/optimizer-ortools/data/test_ortools_single_route_with_route_order' -solution_file '/tmp/optimize-or-tools-output'" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 104d951c..a546f387 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,7 +15,7 @@ env: jobs: build_image: runs-on: ubuntu-latest - timeout-minutes: 25 + timeout-minutes: 60 steps: - uses: actions/checkout@v1 - name: Build image diff --git a/Dockerfile b/Dockerfile index 7d74e2a8..b01c6b5f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,20 +3,31 @@ ARG ARCHITECTURE FROM ${ARCHITECTURE}ruby:${RUBY_VERSION} -ARG ORTOOLS_URL=${ORTOOLS_URL} +ARG ORTOOLS_VERSION=${ORTOOLS_VERSION} LABEL maintainer="Mapotempo " -WORKDIR /srv/ - RUN apt-get update > /dev/null && \ - apt-get -y install git wget pkg-config build-essential cmake autoconf libtool zlib1g-dev lsb-release > /dev/null - -ADD . /srv/or-tools - -RUN wget -qO- $ORTOOLS_URL | tar xz --strip-components=1 -C /srv/or-tools + apt install -y git build-essential cmake swig lsb-release python3-pip autoconf libtool zlib1g-dev > /dev/null && \ + git clone -b ${ORTOOLS_VERSION} https://github.com/google/or-tools /srv/or-tools + +# tmp until ruby image have the good cmake version +RUN curl 'https://github.com/Kitware/CMake/releases/download/v3.15.7/cmake-3.15.7.tar.gz' -s -L -R -o cmake.tar.gz && \ + tar -zxvf cmake.tar.gz && \ + cd cmake-3.15.7 && \ + ./bootstrap && \ + make && \ + make install && \ + cd .. && \ + rm -R cmake-3.15.7 cmake.tar.gz + +WORKDIR /srv/or-tools +RUN /usr/local/bin/cmake -S . -B build -DBUILD_DEPS=ON -DBUILD_PYTHON=ON && \ + /usr/local/bin/cmake --build build --config Release --target install -v ADD . /srv/optimizer-ortools WORKDIR /srv/optimizer-ortools -RUN make tsp_simple +RUN make tsp_simple && \ + cd .. && \ + rm -R /srv/or-tools diff --git a/docker-compose.yml b/docker-compose.yml index 2b16737a..b85c291b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,5 +18,5 @@ services: <<: *app-args context: . dockerfile: Dockerfile - image: dev.example.com/mapotempo/optimizer-ortools + image: dev.example.com/mapotempo-ce/${ARCHITECTURE}optimizer-ortools:latest tty: true