ARG PYTHON_VERSION=3.12.0 ARG PYTHON_VERSION_SHORT=3.12 FROM ubuntu:22.04 AS python_build ARG PYTHON_VERSION ARG PYTHON_VERSION_SHORT ENV DEBIAN_FRONTEND=noninteractive WORKDIR /root RUN apt-get update -y \ && apt-get install --no-install-recommends --no-install-suggests -y \ ca-certificates \ curl \ gcc \ gnupg \ libbz2-dev \ libev-dev \ libffi-dev \ libgdbm-dev \ liblzma-dev \ libncurses-dev \ libreadline-dev \ libsqlite3-dev \ libssl-dev \ make \ tk-dev \ wget \ zlib1g-dev RUN set -x \ && mkdir -p /root/build \ && cd /root/build \ && curl -O https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz \ && tar -xvzf Python-${PYTHON_VERSION}.tgz \ && cd Python-${PYTHON_VERSION} \ && ./configure \ --prefix=/usr \ --enable-optimizations \ && make FROM ubuntu:22.04 ARG PYTHON_VERSION ARG PYTHON_VERSION_SHORT ENV NODEJS_VERSION=22.x ENV NVM_VERSION=0.40.1 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update -y \ && apt-get install --no-install-recommends --no-install-suggests -y \ apt-transport-https \ ca-certificates \ curl \ gcc \ git \ git-lfs \ gnupg \ libbz2-1.0 \ libev4 \ libffi8 \ libgdbm6 \ liblzma5 \ libncurses6 \ libreadline8 \ libsqlite3-0 \ make \ openssl \ sudo \ tklib \ vim RUN adduser --home /home/runner --shell /bin/bash --disabled-password runner \ && adduser runner sudo \ && echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers RUN set -x \ && mkdir -p /usr/share/keyrings \ && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg \ && chmod 644 /usr/share/keyrings/nodesource.gpg \ && arch=$(dpkg --print-architecture) \ && echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODEJS_VERSION} nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null \ && apt-get update -y \ && apt-get install --no-install-recommends --no-install-suggests -y nodejs \ && npm install --global yarn \ && curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash COPY --from=python_build /root/build /tmp/build RUN set -x \ && cd /tmp/build/Python-${PYTHON_VERSION} \ && make install \ && cd ../ \ && rm -r Python-${PYTHON_VERSION} \ && ln -s /usr/lib/python${PYTHON_VERSION_SHORT}/bin/python${PYTHON_VERSION_SHORT} /usr/local/bin/python${PYTHON_VERSION_SHORT} \ && ln -s /usr/local/bin/python${PYTHON_VERSION_SHORT} /usr/local/bin/python3 \ && curl -O https://bootstrap.pypa.io/get-pip.py \ && python3 get-pip.py \ && rm get-pip.py \ && python3 -m pip install \ ansible \ virtualenv RUN curl -sSL -O https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb \ && dpkg -i packages-microsoft-prod.deb \ && rm packages-microsoft-prod.deb \ && apt-get update -y \ && apt-get install --no-install-recommends --no-install-suggests -y azcopy USER runner WORKDIR /home/runner