diff --git a/.travis.yml b/.travis.yml index a95bf67d..e4d43204 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,5 @@ +dist: bionic + language: php branches: @@ -15,6 +17,7 @@ cache: - $HOME/.composer/cache/files before_install: + - sudo ./data/infra/ci/install-docker.sh - sudo ./data/infra/ci/install-ms-odbc.sh - docker-compose -f docker-compose.yml -f docker-compose.ci.yml up -d shlink_db_ms shlink_db shlink_db_postgres shlink_db_maria - yes | pecl install pdo_sqlsrv swoole-4.4.15 diff --git a/Dockerfile b/Dockerfile index 64cd7ebe..edd8314a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,18 +23,25 @@ RUN \ apk add --no-cache libzip-dev zlib-dev libpng-dev && \ docker-php-ext-install -j"$(nproc)" zip gd -# Install swoole and sqlsrv driver -RUN wget https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.5.1.1-1_amd64.apk && \ - wget https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.5.1.1-1_amd64.apk && \ - apk add --allow-untrusted msodbcsql17_17.5.1.1-1_amd64.apk && \ - apk add --allow-untrusted mssql-tools_17.5.1.1-1_amd64.apk && \ - apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS unixodbc-dev && \ - pecl install swoole-${SWOOLE_VERSION} pdo_sqlsrv && \ - docker-php-ext-enable swoole pdo_sqlsrv && \ - apk del .phpize-deps && \ - rm msodbcsql17_17.5.1.1-1_amd64.apk && \ - rm mssql-tools_17.5.1.1-1_amd64.apk +# Install sqlsrv driver +RUN if [ $(uname -m) == "x86_64" ]; then \ + wget https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.5.1.1-1_amd64.apk && \ + wget https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.5.1.1-1_amd64.apk && \ + apk add --allow-untrusted msodbcsql17_17.5.1.1-1_amd64.apk && \ + apk add --allow-untrusted mssql-tools_17.5.1.1-1_amd64.apk && \ + apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS unixodbc-dev && \ + pecl install pdo_sqlsrv && \ + docker-php-ext-enable pdo_sqlsrv && \ + apk del .phpize-deps && \ + rm msodbcsql17_17.5.1.1-1_amd64.apk && \ + rm mssql-tools_17.5.1.1-1_amd64.apk ; \ + fi +# Install swoole +RUN apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS && \ + pecl install swoole-${SWOOLE_VERSION} && \ + docker-php-ext-enable swoole && \ + apk del .phpize-deps # Install shlink FROM base as builder diff --git a/data/infra/ci/install-docker.sh b/data/infra/ci/install-docker.sh new file mode 100755 index 00000000..58289a16 --- /dev/null +++ b/data/infra/ci/install-docker.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -ex + +# install latest docker version +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - +add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" +apt-get update +apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce + +# enable multiarch execution +docker run --rm --privileged multiarch/qemu-user-static --reset -p yes diff --git a/docker/build b/docker/build index 5eea7888..34ee7a21 100755 --- a/docker/build +++ b/docker/build @@ -1,15 +1,26 @@ #!/bin/bash set -e +BUILDX_VER=v0.4.1 +export DOCKER_CLI_EXPERIMENTAL=enabled + +mkdir -vp ~/.docker/cli-plugins/ ~/dockercache +curl --silent -L "https://github.com/docker/buildx/releases/download/${BUILDX_VER}/buildx-${BUILDX_VER}.linux-amd64" > ~/.docker/cli-plugins/docker-buildx +chmod a+x ~/.docker/cli-plugins/docker-buildx + +docker buildx create --use + echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin # If there is a tag, regardless the branch, build that docker tag and also "stable" if [[ ! -z $TRAVIS_TAG ]]; then - docker build --build-arg SHLINK_VERSION=${TRAVIS_TAG#?} -t shlinkio/shlink:${TRAVIS_TAG#?} -t shlinkio/shlink:stable . - docker push shlinkio/shlink:${TRAVIS_TAG#?} - docker push shlinkio/shlink:stable + docker buildx build --push \ + --build-arg SHLINK_VERSION=${TRAVIS_TAG#?} \ + --platform linux/arm/v7,linux/arm64/v8,linux/amd64 \ + -t shlinkio/shlink:${TRAVIS_TAG#?} -t shlinkio/shlink:stable . # If build branch is develop, build latest (on master, when there's no tag, do not build anything) elif [[ "$TRAVIS_BRANCH" == 'develop' ]]; then - docker build -t shlinkio/shlink:latest . - docker push shlinkio/shlink:latest + docker buildx build --push \ + --platform linux/arm/v7,linux/arm64/v8,linux/amd64 \ + -t shlinkio/shlink:latest . fi