diff --git a/20.10/Dockerfile b/20.10/Dockerfile new file mode 100644 index 0000000..f5064e2 --- /dev/null +++ b/20.10/Dockerfile @@ -0,0 +1,31 @@ +# vim:set ft=dockerfile: + +# Do not edit individual Dockerfiles manually. Instead, please make changes to the Dockerfile.template, which will be used by the build script to generate Dockerfiles. + +# By policy, the base image tag should be a quarterly tag unless there's a +# specific reason to use a different one. This means January, April, July, or +# October. + +FROM cimg/base:2023.07 + +LABEL maintainer="Community & Partner Engineering Team " + +ENV NODE_VERSION 20.10.0 + +RUN [[ $(uname -m) == "x86_64" ]] && ARCH="x64" || ARCH="arm64" && \ + curl -L -o node.tar.xz "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" && \ + sudo tar -xJf node.tar.xz -C /usr/local --strip-components=1 && \ + rm node.tar.xz && \ + sudo ln -s /usr/local/bin/node /usr/local/bin/nodejs + +ENV PATH /home/circleci/.yarn/bin:$PATH + +ENV YARN_VERSION 1.22.19 +RUN curl -L -o yarn.tar.gz "https://yarnpkg.com/downloads/${YARN_VERSION}/yarn-v${YARN_VERSION}.tar.gz" && \ + sudo tar -xzf yarn.tar.gz -C /opt/ && \ + rm yarn.tar.gz && \ + sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarn /usr/local/bin/yarn && \ + sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarnpkg /usr/local/bin/yarnpkg + +# Install an alternative, but growing in popularity Node.js package manager +RUN sudo npm install -g pnpm diff --git a/20.10/browsers/Dockerfile b/20.10/browsers/Dockerfile new file mode 100644 index 0000000..9e287c8 --- /dev/null +++ b/20.10/browsers/Dockerfile @@ -0,0 +1,68 @@ +# vim:set ft=dockerfile: + +# This file is a duplicate of: +# https://github.com/CircleCI-Public/cimg-shared/blob/master/variants/browsers.Dockerfile.template +# The reason this exists is that the Node.js image needed its own version of +# the browsers variant. The normal version is based on the node variant of that +# image. As this IS a Node image, there isn't a node variant. + +FROM cimg/node:20.10.0 + +LABEL maintainer="CircleCI Community & Partner Engineering Team " + +# Install Selenium +ENV SELENIUM_VER=3.141.59 +RUN curl -sSL -o selenium-server-standalone-${SELENIUM_VER}.jar "https://selenium-release.storage.googleapis.com/${SELENIUM_VER%.*}/selenium-server-standalone-${SELENIUM_VER}.jar" && \ + sudo cp selenium-server-standalone-${SELENIUM_VER}.jar /usr/local/bin/selenium.jar && \ + rm selenium-server-standalone-${SELENIUM_VER}.jar + +RUN sudo apt-get update && \ + + # Install Java only if it's not already available + # Java is installed for Selenium + if ! command -v java > /dev/null; then \ + echo "Java not found in parent image, installing..." && \ + sudo apt-get install -y --no-install-recommends --no-upgrade openjdk-11-jre; \ + fi && \ + + # Firefox deps + sudo apt-get install -y --no-install-recommends --no-upgrade \ + libdbus-glib-1-2 \ + libgtk-3-dev \ + libxt6 \ + && \ + # Google Chrome deps + # Some of these packages should be pulled into their own section + sudo apt-get install -y --no-install-recommends --no-upgrade \ + fonts-liberation \ + libappindicator3-1 \ + libasound2 \ + libatk-bridge2.0-0 \ + libatspi2.0-0 \ + libcairo2 \ + libcups2 \ + libgbm1 \ + libgdk-pixbuf2.0-0 \ + libgtk-3-0 \ + libpango-1.0-0 \ + libpangocairo-1.0-0 \ + libxcursor1 \ + libxss1 \ + xdg-utils \ + xvfb \ + && \ + sudo rm -rf /var/lib/apt/lists/* + +# Below is setup to allow xvfb to start when the container starts up. +# The label in particular allows this image to override what CircleCI does +# when booting the image. +LABEL com.circleci.preserve-entrypoint=true +ENV DISPLAY=":99" +#RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' > /tmp/entrypoint && \ +# chmod +x /tmp/entrypoint && \ +# sudo mv /tmp/entrypoint /docker-entrypoint.sh +RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' | sudo tee /docker-entrypoint.sh && \ + sudo chmod +x /docker-entrypoint.sh + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["/bin/sh"] diff --git a/ALIASES b/ALIASES index ad8d246..2c68c75 100644 --- a/ALIASES +++ b/ALIASES @@ -1,2 +1,2 @@ -lts=20.9.0 current=21.2.0 +lts=20.10.0 diff --git a/GEN-CHECK b/GEN-CHECK index 35f7a22..587b90e 100644 --- a/GEN-CHECK +++ b/GEN-CHECK @@ -1 +1 @@ -GEN_CHECK=(21.2.0=current) +GEN_CHECK=(20.10.0=lts) diff --git a/build-images.sh b/build-images.sh index 6c281b6..96770ea 100755 --- a/build-images.sh +++ b/build-images.sh @@ -4,5 +4,5 @@ set -eo pipefail docker context create cimg docker buildx create --use cimg -docker buildx build --platform=linux/amd64,linux/arm64 --file 21.2/Dockerfile -t cimg/node:21.2.0 -t cimg/node:21.2 --push . -docker buildx build --platform=linux/amd64 --file 21.2/browsers/Dockerfile -t cimg/node:21.2.0-browsers -t cimg/node:21.2-browsers --push . +docker buildx build --platform=linux/amd64,linux/arm64 --file 20.10/Dockerfile -t cimg/node:20.10.0 -t cimg/node:20.10 --push . +docker buildx build --platform=linux/amd64 --file 20.10/browsers/Dockerfile -t cimg/node:20.10.0-browsers -t cimg/node:20.10-browsers --push . diff --git a/push-images.sh b/push-images.sh index e5cf98e..b2f8d51 100755 --- a/push-images.sh +++ b/push-images.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash # Do not edit by hand; please use build scripts/templates to make changes set -eo pipefail -docker buildx imagetools create -t cimg/node:current cimg/node:21.2.0 -docker buildx imagetools create -t cimg/node:current-browsers cimg/node:21.2.0-browsers +docker buildx imagetools create -t cimg/node:lts cimg/node:20.10.0 +docker buildx imagetools create -t cimg/node:lts-browsers cimg/node:20.10.0-browsers