diff --git a/.ruby-version b/.ruby-version index b1b25a5..005119b 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.2.2 +2.4.1 diff --git a/Dockerfile b/Dockerfile index 6d8ec0f..b39ba56 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,60 +1,73 @@ -FROM ubuntu:14.04 -MAINTAINER Edwin van der Graaf +FROM buildpack-deps:bionic +MAINTAINER Flurin Egger RUN apt-get update RUN apt-get -y upgrade -RUN apt-get -y install build-essential zlib1g-dev libssl-dev \ - libreadline6-dev libyaml-dev git python-software-properties \ - fontconfig libjpeg8 libjpeg-turbo8 libicu52 - -ENV RUBY_DOWNLOAD_SHA256 ba5ba60e5f1aa21b4ef8e9bf35b9ddb57286cb546aac4b5a28c71f459467e507 -ADD https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.gz /tmp/ - -# Install ruby -RUN \ - cd /tmp && \ - echo "$RUBY_DOWNLOAD_SHA256 *ruby-2.3.0.tar.gz" | sha256sum -c - && \ - tar -xzf ruby-2.3.0.tar.gz && \ - cd ruby-2.3.0 && \ - ./configure && \ - make && \ - make install && \ - cd .. && \ - rm -rf ruby-2.3.0 && \ - rm -f ruby-2.3.0.tar.gz +RUN apt-get -y install software-properties-common zip rsync + +# Install Ruby +RUN apt-add-repository ppa:brightbox/ruby-ng && apt-get update +RUN apt-get -y install ruby2.5 ruby2.5-dev RUN gem install bundler --no-ri --no-rdoc # Install node -ENV NODEJS_DOWNLOAD_SHA256 d7742558bb3331e41510d6e6f1f7b13c0527aecc00a63c3e05fcfd44427ff778 -ADD https://nodejs.org/dist/v6.5.0/node-v6.5.0.tar.gz /tmp/ - -RUN \ - cd /tmp && \ - echo "$NODEJS_DOWNLOAD_SHA256 *node-v6.5.0.tar.gz" | sha256sum -c - && \ - tar xvzf node-v6.5.0.tar.gz && \ - rm -f node-v6.5.0.tar.gz && \ - cd node-v* && \ - ./configure && \ - CXX="g++ -Wno-unused-local-typedefs" make && \ - CXX="g++ -Wno-unused-local-typedefs" make install && \ - cd /tmp && \ - rm -rf /tmp/node-v* && \ - echo -e '\n# Node.js\nexport PATH="node_modules/.bin:$PATH"' >> /root/.bashrc - -RUN npm install yarn@0.16.1 -g - -# Download phantomjs build (see README) -RUN \ - cd /tmp && \ - git clone https://github.com/edwinvdgraaf/phantomjs-build.git && \ - cd phantomjs-build && \ - cp bin/phantomjs /usr/local/bin/ && \ - cd /tmp && \ - rm -rf /tmp/phantomjs-build - -# Install extra dependencies -# separated from the compile dependencies for node and ruby -# to make use of docker build layers -RUN apt-get -y install zip yui-compressor curl +# Based on https://github.com/nodejs/docker-node/blob/master/9/Dockerfile +# gpg keys listed at https://github.com/nodejs/node#release-team +RUN set -ex \ + && for key in \ + 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ + FD3A5288F042B6850C66B31F09FE44734EB7990E \ + 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ + DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ + B9AE9905FFD7803F25714661B63B535A4C206CA9 \ + C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ + 56730D5401028683275BD23C23EFEFE93C4CFFFE \ + 77984A986EBC2AA786BC0F66B01FBB92821C587A \ + 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \ + ; do \ + gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" || \ + gpg --keyserver hkp://keyserver.pgp.com:80 --recv-keys "$key" || \ + gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ + gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" ; \ + done + +ENV NODE_VERSION 10.8.0 + +RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ + && case "${dpkgArch##*-}" in \ + amd64) ARCH='x64';; \ + ppc64el) ARCH='ppc64le';; \ + s390x) ARCH='s390x';; \ + arm64) ARCH='arm64';; \ + armhf) ARCH='armv7l';; \ + i386) ARCH='x86';; \ + *) echo "unsupported architecture"; exit 1 ;; \ + esac \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ + && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ + && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ + && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ + && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ + && ln -s /usr/local/bin/node /usr/local/bin/nodejs + +ENV YARN_VERSION 1.9.4 + +RUN set -ex \ + && for key in \ + 6A010C5166006599AA17F08146C2130DFD2497F5 \ + ; do \ + gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ + gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ + gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ + done \ + && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ + && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ + && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ + && mkdir -p /opt \ + && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \ + && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \ + && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \ + && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz diff --git a/circle.yml b/circle.yml index a69c273..2ea264e 100644 --- a/circle.yml +++ b/circle.yml @@ -9,8 +9,8 @@ dependencies: - bundle install - docker info - if [[ -e ~/docker/image.tar ]]; then docker load --input ~/docker/image.tar; fi - - docker build -t edwinvdgraaf/ruby-node-phantomjs . - - mkdir -p ~/docker; docker save edwinvdgraaf/ruby-node-phantomjs > ~/docker/image.tar + - docker build -t digitpaint/ruby-node-phantomjs . + - mkdir -p ~/docker; docker save digitpaint/ruby-node-phantomjs > ~/docker/image.tar test: override: @@ -22,5 +22,5 @@ deployment: tag: /v[0-9]+(\.[0-9]+)*/ commands: - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS - - docker tag edwinvdgraaf/ruby-node-phantomjs edwinvdgraaf/ruby-node-phantomjs:$CIRCLE_TAG - - docker push edwinvdgraaf/ruby-node-phantomjs:$CIRCLE_TAG + - docker tag digitpaint/ruby-node-phantomjs digitpaint/ruby-node-phantomjs:$CIRCLE_TAG + - docker push digitpaint/ruby-node-phantomjs:$CIRCLE_TAG diff --git a/spec/dockerfile_spec.rb b/spec/dockerfile_spec.rb index fabc158..53bd452 100644 --- a/spec/dockerfile_spec.rb +++ b/spec/dockerfile_spec.rb @@ -24,41 +24,19 @@ def remove(*); end end it "ubuntu" do - expect(os_version).to include("Ubuntu 14") - end - - # Zip and yiu-compressor for roger release - %w{git zip yui-compressor}.each do |p| - it "installs package #{p}" do - expect(package(p)).to be_installed - end - end - - # PhantomJS runtime dependencies - %w{fontconfig libjpeg8 libjpeg-turbo8 libicu52}.each do |p| - it "installs package #{p}" do - expect(package(p)).to be_installed - end + expect(os_version).to include("Ubuntu 18") end describe command("ruby -v") do - its(:stdout) { should match /2\.3\.0p0/ } - end - - describe command("node -v") do - its(:stdout) { should match /6\.5\.0/ } + its(:stdout) { should match /2\.5/ } end - describe command("npm -v") do - its(:stdout) { should match /3\.10\.3/ } + describe command("node --version") do + its(:stdout) { should match /10\.8\.0/ } end describe command("yarn --version") do - its(:stdout) { should match /0\.16\.1/ } - end - - describe command("phantomjs -v") do - its(:stdout) { should match /2\.0\.0/ } + its(:stdout) { should match /1\.9\.4/ } end def os_version