diff --git a/.travis.yml b/.travis.yml index fefef779..3e0b1daa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,81 @@ -sudo: required -dist: trusty +jobs: + include: + - sudo: required + services: + - docker + language: generic + before_install: docker pull carto/nodejs6-xenial-pg101 + script: npm run docker-test + - dist: precise + addons: + postgresql: "9.5" + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - pkg-config + - libcairo2-dev + - libjpeg8-dev + - libgif-dev + - libpango1.0-dev + - g++-4.9 + - wget -services: - - docker + before_install: + # Add custom PPAs from cartodb + - sudo add-apt-repository -y ppa:cartodb/postgresql-9.5 + - sudo add-apt-repository -y ppa:cartodb/gis + - sudo add-apt-repository -y ppa:cartodb/gis-testing -before_install: - - docker pull cartoimages/windshaft-testing + - sudo apt-get update + + # Force instalation of libgeos-3.5.0 (presumably needed because of existing version of postgis) + - sudo apt-get -y install libgeos-3.5.0=3.5.0-1cdb2 -script: - - docker run -e POSTGIS_VERSION=2.4 -v `pwd`:/srv cartoimages/windshaft-testing bash docker-test.sh + # Install postgres db and build deps + - sudo /etc/init.d/postgresql stop # stop travis default instance + - sudo apt-get -y remove --purge postgresql-9.1 + - sudo apt-get -y remove --purge postgresql-9.2 + - sudo apt-get -y remove --purge postgresql-9.3 + - sudo apt-get -y remove --purge postgresql-9.4 + - sudo apt-get -y remove --purge postgresql-9.5 + - sudo apt-get -y remove --purge postgresql-9.6 + - sudo rm -rf /var/lib/postgresql/ + - sudo rm -rf /var/log/postgresql/ + - sudo rm -rf /etc/postgresql/ + - sudo apt-get -y remove --purge postgis-2.2 + - sudo apt-get -y autoremove + - sudo apt-get -y install postgresql-9.5=9.5.2-3cdb3 + - sudo apt-get -y install postgresql-server-dev-9.5=9.5.2-3cdb3 + - sudo apt-get -y install postgresql-plpython-9.5=9.5.2-3cdb3 + - sudo apt-get -y install postgresql-9.5-postgis-scripts=2.2.2.0-cdb2 + - sudo apt-get -y install postgresql-9.5-postgis-2.2=2.2.2.0-cdb2 -language: generic + # configure it to accept local connections from postgres + - echo -e "# TYPE DATABASE USER ADDRESS METHOD \nlocal all postgres trust\nlocal all all trust\nhost all all 127.0.0.1/32 trust" \ + | sudo tee /etc/postgresql/9.5/main/pg_hba.conf + - sudo /etc/init.d/postgresql restart 9.5 + - createdb template_postgis + - createuser publicuser + - psql -c "CREATE EXTENSION postgis" template_postgis + + # install yarn 0.27.5 + - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 0.27.5 + - export PATH="$HOME/.yarn/bin:$PATH" + + # instal redis 4 + - wget http://download.redis.io/releases/redis-4.0.8.tar.gz + - tar xvzf redis-4.0.8.tar.gz + - cd redis-4.0.8 + - make + - sudo make install + - cd .. + - rm redis-4.0.8.tar.gz + + env: + - NPROCS=1 JOBS=1 PGUSER=postgres CXX=g++-4.9 + + language: node_js + node_js: + - "6" diff --git a/NEWS.md b/NEWS.md index 9fdf599a..74bbe860 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,6 +4,7 @@ Released 2018-mm-dd New features: +- CI tests with Ubuntu Xenial + PostgreSQL 10.1 and Ubuntu Precise + PostgreSQL 9.5 Bug Fixes: diff --git a/docker-test.sh b/docker-test.sh deleted file mode 100644 index 8cc8c093..00000000 --- a/docker-test.sh +++ /dev/null @@ -1,11 +0,0 @@ -export NPROCS=1 && export JOBS=1 && export CXX=g++-4.9 && export PGUSER=postgres - -npm install -g yarn@0.27.5 -yarn - - /etc/init.d/postgresql start - -createdb template_postgis && createuser publicuser -psql -c "CREATE EXTENSION postgis" template_postgis - -POSTGIS_VERSION=2.4 npm test \ No newline at end of file diff --git a/docker/Dockerfile-nodejs6-xenial-pg101 b/docker/Dockerfile-nodejs6-xenial-pg101 new file mode 100644 index 00000000..d1d70589 --- /dev/null +++ b/docker/Dockerfile-nodejs6-xenial-pg101 @@ -0,0 +1,89 @@ +FROM ubuntu:xenial + +# Use UTF8 to avoid encoding problems with pgsql +ENV LANG C.UTF-8 +ENV NPROCS 1 +ENV JOBS 1 +ENV CXX g++-4.9 +ENV PGUSER postgres + +# Add external repos +RUN set -ex \ + && apt-get update \ + && apt-get install -y \ + curl \ + software-properties-common \ + locales \ + && add-apt-repository -y ppa:ubuntu-toolchain-r/test \ + && add-apt-repository -y ppa:cartodb/postgresql-10 \ + && add-apt-repository -y ppa:cartodb/gis \ + && curl -sL https://deb.nodesource.com/setup_6.x | bash \ + && locale-gen en_US.UTF-8 \ + && update-locale LANG=en_US.UTF-8 + +# Install dependencies and PostGIS 2.4 from sources +RUN set -ex \ + && apt-get update \ + && apt-get install -y \ + g++-4.9 \ + gcc-4.9 \ + git \ + libcairo2-dev \ + libgdal-dev \ + libgdal1i \ + libgdal20 \ + libgeos-dev \ + libgif-dev \ + libjpeg8-dev \ + libjson-c-dev \ + libpango1.0-dev \ + libpixman-1-dev \ + libproj-dev \ + libprotobuf-c-dev \ + libxml2-dev \ + gdal-bin \ + make \ + nodejs \ + protobuf-c-compiler \ + pkg-config \ + wget \ + zip \ + postgresql-10 \ + postgresql-10-plproxy \ + postgresql-10-postgis-2.4 \ + postgresql-10-postgis-2.4-scripts \ + postgresql-10-postgis-scripts \ + postgresql-client-10 \ + postgresql-client-common \ + postgresql-common \ + postgresql-contrib \ + postgresql-plpython-10 \ + postgresql-server-dev-10 \ + postgis \ + && wget http://download.redis.io/releases/redis-4.0.8.tar.gz \ + && tar xvzf redis-4.0.8.tar.gz \ + && cd redis-4.0.8 \ + && make \ + && make install \ + && cd .. \ + && rm redis-4.0.8.tar.gz \ + && rm -R redis-4.0.8 \ + && apt-get purge -y wget protobuf-c-compiler \ + && apt-get autoremove -y + +# Configure PostgreSQL +RUN set -ex \ + && echo "listen_addresses='*'" >> /etc/postgresql/10/main/postgresql.conf \ + && echo "local all all trust" > /etc/postgresql/10/main/pg_hba.conf \ + && echo "host all all 0.0.0.0/0 trust" >> /etc/postgresql/10/main/pg_hba.conf \ + && echo "host all all ::1/128 trust" >> /etc/postgresql/10/main/pg_hba.conf \ + && /etc/init.d/postgresql start \ + && createdb template_postgis \ + && createuser publicuser \ + && psql -c "CREATE EXTENSION postgis" template_postgis \ + && /etc/init.d/postgresql stop + +WORKDIR /srv +EXPOSE 5858 + +CMD /etc/init.d/postgresql start diff --git a/docker/reference.md b/docker/reference.md new file mode 100644 index 00000000..3c49c433 --- /dev/null +++ b/docker/reference.md @@ -0,0 +1,23 @@ +After running the tests with docker, you will need Docker installed and the docker image downloaded. + +## Install docker +`sudo apt install docker.io && sudo usermod -aG docker $(whoami)` + +## Download image +`docker pull carto/IMAGE` + +## Carto account +https://hub.docker.com/r/carto/ + +## Update image +- Edit the docker image file with your desired changes +- Build image: + - `docker build -t carto/IMAGE -f docker/DOCKER_FILE docker/` + +- Upload to docker hub: + - Login into docker hub: + - `docker login` + - Create tag: + - `docker tag carto/IMAGE carto/IMAGE` + - Upload: + - `docker push carto/IMAGE` diff --git a/package.json b/package.json index fce46f9d..1387632c 100644 --- a/package.json +++ b/package.json @@ -65,10 +65,8 @@ "preinstall": "make pre-install", "test": "make test-all", "update-internal-deps": "rm -rf node_modules && rm -f yarn.lock && yarn", - "docker-install": "sudo apt install docker.io && sudo usermod -aG docker $(whoami)", - "docker-pull": "docker pull cartoimages/windshaft-testing", - "docker-test": "docker run -v `pwd`:/srv cartoimages/windshaft-testing bash docker-test.sh && docker ps --filter status=dead --filter status=exited -aq | xargs -r docker rm -v", - "docker-bash": "docker run -it -v `pwd`:/srv cartoimages/windshaft-testing bash" + "docker-test": "docker run -v `pwd`:/srv carto/nodejs6-xenial-pg101 bash run_tests_docker.sh && docker ps --filter status=dead --filter status=exited -aq | xargs -r docker rm -v", + "docker-bash": "docker run -it -v `pwd`:/srv carto/nodejs6-xenial-pg101 bash" }, "engines": { "node": ">=6.9", diff --git a/run_tests_docker.sh b/run_tests_docker.sh new file mode 100644 index 00000000..4a6b142a --- /dev/null +++ b/run_tests_docker.sh @@ -0,0 +1,9 @@ +# start PostgreSQL +/etc/init.d/postgresql start + +# install dependencies +npm install -g yarn@0.27.5 +yarn + +# run tests +POSTGIS_VERSION=2.4 npm test