@@ -36,7 +36,7 @@ RUN set -ex \
3636 perl-DBI perl-HTTP-Date perl-TimeDate perl-YAML-LibYAML \
3737 postgresql-devel procps-ng python-configobj readline-devel rsync sgml-common \
3838 subversion-perl tar tcl tk vim wget which xfsprogs xmlto xorg-x11-server-Xvfb xz-devel \
39- amazon-ecr-credential-helper \
39+ amazon-ecr-credential-helper git-lfs \
4040 && rm /etc/yum.repos.d/mono-centos7-stable.repo
4141
4242RUN useradd codebuild-user
@@ -45,9 +45,17 @@ RUN useradd codebuild-user
4545
4646FROM core AS tools
4747
48+ # Install AWS SAM CLI
49+ RUN wget -nv https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip -O /tmp/samcli.zip \
50+ && unzip -q /tmp/samcli.zip -d /opt \
51+ && /opt/install --update -i /usr/local/sam-cli -b /usr/local/bin \
52+ && rm /tmp/samcli.zip /opt/install \
53+ && rm -rf /opt/aws-sam-cli-src \
54+ && sam --version
55+
4856# Install Git
4957RUN set -ex \
50- && GIT_VERSION=2.40 .1 \
58+ && GIT_VERSION=2.42 .1 \
5159 && GIT_TAR_FILE=git-$GIT_VERSION.tar.gz \
5260 && GIT_SRC=https://github.com/git/git/archive/v${GIT_VERSION}.tar.gz \
5361 && curl -L -o $GIT_TAR_FILE $GIT_SRC \
@@ -60,9 +68,9 @@ RUN set -ex \
6068
6169# Install stunnel
6270RUN set -ex \
63- && STUNNEL_VERSION=5.69 \
71+ && STUNNEL_VERSION=5.71 \
6472 && STUNNEL_TAR=stunnel-$STUNNEL_VERSION.tar.gz \
65- && STUNNEL_SHA256="1ff7d9f30884c75b98c8a0a4e1534fa79adcada2322635e6787337b4e38fdb81 " \
73+ && STUNNEL_SHA256="f023aae837c2d32deb920831a5ee1081e11c78a5d57340f8e6f0829f031017f5 " \
6674 && curl -o $STUNNEL_TAR https://www.stunnel.org/archive/5.x/$STUNNEL_TAR && echo "$STUNNEL_SHA256 $STUNNEL_TAR" | sha256sum --check && tar xfz $STUNNEL_TAR \
6775 && cd stunnel-$STUNNEL_VERSION \
6876 && ./configure \
@@ -92,11 +100,6 @@ RUN set -ex \
92100&& wget -qO /usr/local/bin/dotnet-install.sh https://dot.net/v1/dotnet-install.sh \
93101&& chmod +x /usr/local/bin/dotnet-install.sh
94102
95- # #nodejs
96- ENV N_SRC_DIR="$SRC_DIR/n"
97- RUN git clone https://github.com/tj/n $N_SRC_DIR \
98- && cd $N_SRC_DIR && make install
99-
100103# #ruby
101104ENV RBENV_SRC_DIR="/usr/local/rbenv"
102105
@@ -110,7 +113,7 @@ RUN set -ex \
110113 && sh $RUBY_BUILD_SRC_DIR/install.sh
111114
112115# #python
113- RUN curl https://pyenv.run | bash
116+ RUN curl -s -S -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
114117ENV PATH="/root/.pyenv/shims:/root/.pyenv/bin:$PATH"
115118
116119# #php
@@ -132,15 +135,18 @@ FROM tools AS runtimes_1
132135ENV JAVA_17_HOME="/usr/lib/jvm/java-17-amazon-corretto.x86_64" \
133136 JDK_17_HOME="/usr/lib/jvm/java-17-amazon-corretto.x86_64" \
134137 JRE_17_HOME="/usr/lib/jvm/java-17-amazon-corretto.x86_64" \
135- ANT_VERSION=1.10.13 \
138+ JAVA_21_HOME="/usr/lib/jvm/java-21-amazon-corretto.x86_64" \
139+ JDK_21_HOME="/usr/lib/jvm/java-21-amazon-corretto.x86_64" \
140+ JRE_21_HOME="/usr/lib/jvm/java-21-amazon-corretto.x86_64" \
141+ ANT_VERSION=1.10.14 \
136142 MAVEN_HOME="/opt/maven" \
137- MAVEN_VERSION=3.9.2 \
138- GRADLE_VERSION=8.1.1 \
143+ MAVEN_VERSION=3.9.5 \
144+ GRADLE_VERSION=8.3 \
139145 SBT_VERSION=1.8.3 \
140146 GRADLE_PATH="$SRC_DIR/gradle" \
141- ANT_DOWNLOAD_SHA512="de4ac604629e39a86a306f0541adb3775596909ad92feb8b7de759b1b286417db24f557228737c8b902d6abf722d2ce5bb0c3baa3640cbeec3481e15ab1958c9 " \
142- MAVEN_DOWNLOAD_SHA512="900bdeeeae550d2d2b3920fe0e00e41b0069f32c019d566465015bdd1b3866395cbe016e22d95d25d51d3a5e614af2c83ec9b282d73309f644859bbad08b63db " \
143- GRADLE_DOWNLOADS_SHA256="5625a0ae20fe000d9225d000b36909c7a0e0e8dda61c19b12da769add847c975 8.1.1 " \
147+ ANT_DOWNLOAD_SHA512="4e74b382dd8271f9eac9fef69ba94751fb8a8356dbd995c4d642f2dad33de77bd37d4001d6c8f4f0ef6789529754968f0c1b6376668033c8904c6ec84543332a " \
148+ MAVEN_DOWNLOAD_SHA512="4810523ba025104106567d8a15a8aa19db35068c8c8be19e30b219a1d7e83bcab96124bf86dc424b1cd3c5edba25d69ec0b31751c136f88975d15406cab3842b " \
149+ GRADLE_DOWNLOADS_SHA256="bb09982fdf52718e4c7b25023d10df6d35a5fff969860bdf5a5bd27a3ab27a9e 8.3 " \
144150 SBT_DOWNLOAD_SHA256="21F4210786FD68FD15DCA3F4C8EE9CAE0DB249C54E1B0EF6E829E9FA4936423A"
145151
146152ARG MAVEN_CONFIG_HOME="/root/.m2"
@@ -153,6 +159,7 @@ RUN set -x \
153159 && rpm --import https://yum.corretto.aws/corretto.key \
154160 && curl -L -o /etc/yum.repos.d/corretto.repo https://yum.corretto.aws/corretto.repo \
155161 && yum install -y -q java-17-amazon-corretto java-17-amazon-corretto-devel \
162+ && yum install -y -q java-21-amazon-corretto-devel \
156163 && update-ca-trust \
157164 && for tool_path in $JAVA_HOME/bin/*; do \
158165 tool=`basename $tool_path`; \
@@ -231,14 +238,23 @@ RUN curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o /tmp/awscli
231238 && aws --version
232239
233240# DotNet 6.0
234- ENV DOTNET_60_SDK_VERSION="6.0.410"
241+ ENV DOTNET_6_SDK_VERSION="6.0.417"
242+ ENV DOTNET_8_SDK_VERSION="8.0.100"
243+ ENV DOTNET_6_GLOBAL_JSON_SDK_VERSION="6.0.0"
244+ ENV DOTNET_8_GLOBAL_JSON_SDK_VERSION="8.0.0"
235245ENV DOTNET_ROOT="/root/.dotnet"
236246
237- # Add .NET Core 6.0 Global Tools install folder to PATH
238- RUN /usr/local/bin/dotnet-install.sh -v $DOTNET_60_SDK_VERSION \
247+ # Add .NET Core 8 Global Tools install folder to PATH
248+ RUN /usr/local/bin/dotnet-install.sh -v $DOTNET_8_SDK_VERSION \
239249 && dotnet --list-sdks \
240250 && rm -rf /tmp/*
241251
252+ # Add .NET Core 6.0 Global Tools install folder to PATH
253+ RUN /usr/local/bin/dotnet-install.sh -v $DOTNET_6_SDK_VERSION \
254+ && dotnet --list-sdks \
255+ && rm -rf /tmp/* \
256+ && cd /codebuild && dotnet new globaljson --force --sdk-version $DOTNET_6_GLOBAL_JSON_SDK_VERSION --roll-forward feature
257+
242258# # Trigger the population of the local package cache
243259ENV NUGET_XMLDOC_MODE skip
244260RUN set -ex \
@@ -250,18 +266,25 @@ RUN set -ex \
250266 && rm -rf /tmp/NuGetScratch
251267# **************** END Powershell *******************************************************
252268
253-
254269# **************** NODEJS ****************************************************
255270
256- ENV NODE_18_VERSION="18.16.0"
271+ ENV N_SRC_DIR="$SRC_DIR/n"
272+ ENV NODE_18_VERSION="18.18.2"
273+ ENV NODE_20_VERSION="20.9.0"
257274
258- RUN n $NODE_18_VERSION && npm install --save-dev -g -f grunt && npm install --save-dev -g -f grunt-cli && npm install --save-dev -g -f webpack \
259- && curl -sSL https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo \
260- && rpm --import https://dl.yarnpkg.com/rpm/pubkey.gpg \
261- && yum install -y https://dl.fedoraproject.org/pub/epel/8/Modular/x86_64/Packages/l/libuv-1.43.0-2.module_el8+13804+34326f90.x86_64.rpm \
262- && yum install -y -q yarn \
263- && yarn --version \
264- && cd / && rm -rf $N_SRC_DIR && rm -rf /tmp/*
275+ RUN git clone https://github.com/tj/n $N_SRC_DIR \
276+ && cd $N_SRC_DIR && make install
277+
278+ RUN n $NODE_18_VERSION && npm install --save-dev -g -f grunt \
279+ && npm install --save-dev -g -f grunt-cli \
280+ && npm install --save-dev -g -f webpack \
281+ && npm install --save-dev -g -f yarn \
282+ && n $NODE_20_VERSION && npm install --save-dev -g -f grunt \
283+ && npm install --save-dev -g -f grunt-cli \
284+ && npm install --save-dev -g -f webpack \
285+ && npm install --save-dev -g -f yarn \
286+ && dnf install -y -v libuv-1.44* \
287+ && cd / && rm -rf $N_SRC_DIR && rm -rf /tmp/*
265288
266289# **************** END NODEJS ****************************************************
267290
@@ -275,24 +298,35 @@ RUN rbenv install $RUBY_32_VERSION && rm -rf /tmp/* && rbenv global $RUBY_32_VER
275298
276299# **************** PYTHON *****************************************************
277300# Python 3.11
278- ENV PYTHON_311_VERSION="3.11.4"
279- ENV PYTHON_PIP_VERSION=23.1.2
301+ ENV PYTHON_311_VERSION="3.11.6"
302+ ENV PYTHON_312_VERSION="3.12.0"
303+ ENV PYTHON_PIP_VERSION=23.3.1
280304ENV PYYAML_VERSION=5.4.1
281305
306+ COPY tools/runtime_configs/python/$PYTHON_312_VERSION /root/.pyenv/plugins/python-build/share/python-build/$PYTHON_312_VERSION
307+ RUN env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install $PYTHON_312_VERSION && rm -rf /tmp/*
282308COPY tools/runtime_configs/python/$PYTHON_311_VERSION /root/.pyenv/plugins/python-build/share/python-build/$PYTHON_311_VERSION
283- RUN env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install $PYTHON_311_VERSION && rm -rf /tmp/*
284- RUN pyenv global $PYTHON_311_VERSION
309+ RUN env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install $PYTHON_311_VERSION && rm -rf /tmp/*
285310RUN set -ex \
311+ && pyenv global $PYTHON_312_VERSION \
286312 && pip3 install --no-cache-dir --upgrade --force-reinstall "pip==$PYTHON_PIP_VERSION" \
287313 && pip3 install wheel \
314+ && pip3 install --no-cache-dir --upgrade 'setuptools==67.7.2' boto3 pipenv virtualenv \
288315 && pip3 install --no-build-isolation "Cython<3" "PyYAML==$PYYAML_VERSION" \
289- && pip3 install --no-cache-dir --upgrade 'setuptools==67.7.2' aws-sam-cli boto3 pipenv virtualenv \
316+ && pip3 uninstall cython --yes
317+
318+ RUN set -ex \
319+ && pyenv global $PYTHON_311_VERSION \
320+ && pip3 install --no-cache-dir --upgrade --force-reinstall "pip==$PYTHON_PIP_VERSION" \
321+ && pip3 install wheel \
322+ && pip3 install --no-build-isolation "Cython<3" "PyYAML==$PYYAML_VERSION" \
323+ && pip3 install --no-cache-dir --upgrade 'setuptools==67.7.2' boto3 pipenv virtualenv \
290324 && pip3 uninstall cython --yes
291325
292326# **************** END PYTHON *****************************************************
293327
294328# **************** PHP ****************************************************
295- ENV PHP_82_VERSION="8.2.7 "
329+ ENV PHP_82_VERSION="8.2.12 "
296330
297331COPY tools/runtime_configs/php/$PHP_82_VERSION /root/.phpenv/plugins/php-build/share/php-build/definitions/$PHP_82_VERSION
298332RUN phpenv install $PHP_82_VERSION && rm -rf /tmp/* && phpenv global $PHP_82_VERSION
@@ -303,11 +337,13 @@ RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin -
303337# **************** END PHP ****************************************************
304338
305339# **************** GOLANG ****************************************************
306- ENV GOLANG_20_VERSION="1.20.5"
340+ ENV GOLANG_20_VERSION="1.20.11"
341+ ENV GOLANG_21_VERSION="1.21.4"
307342ENV GOENV_DISABLE_GOPATH=1
308343ENV GOPATH="/go"
309344
310345RUN goenv install $GOLANG_20_VERSION && rm -rf /tmp/* && \
346+ goenv install $GOLANG_21_VERSION && rm -rf /tmp/* && \
311347 goenv global $GOLANG_20_VERSION && \
312348 go env -w GO111MODULE=auto
313349
@@ -321,7 +357,7 @@ FROM runtimes_1 AS runtimes_2
321357ENV DOCKER_BUCKET="download.docker.com" \
322358 DOCKER_CHANNEL="stable" \
323359 DIND_COMMIT="3b5fac462d21ca164b3778647420016315289034" \
324- DOCKER_COMPOSE_VERSION="2.17.3 " \
360+ DOCKER_COMPOSE_VERSION="2.23.1 " \
325361 DOCKER_BUILDX_VERSION="0.11.0"
326362
327363ENV DOCKER_SHA256="544262F4A3621222AFB79960BFAD4D486935DAB80893478B5CC9CF8EBAF409AE"
@@ -349,14 +385,13 @@ RUN set -ex \
349385 # Ensure docker-compose and docker compose work
350386 && docker-compose version \
351387 && docker compose version \
352- # Add docker buildx tool \
388+ # Add docker buildx tool
353389 && curl -L https://github.com/docker/buildx/releases/download/v${DOCKER_BUILDX_VERSION}/buildx-v${DOCKER_BUILDX_VERSION}.linux-amd64 -o /usr/local/lib/docker/cli-plugins/docker-buildx \
354390 && chmod +x /usr/local/bin/dind /usr/local/lib/docker/cli-plugins/docker-buildx \
355391 && ln -s /usr/local/lib/docker/cli-plugins/docker-buildx /usr/local/bin/docker-buildx \
356392 # Ensure docker-buildx works
357393 && docker-buildx version \
358394 && docker buildx version
359-
360395# =======================End of layer: runtimes_2 =================
361396FROM runtimes_2 AS runtimes_3
362397
@@ -369,6 +404,14 @@ RUN set -ex \
369404# ===================END of runtimes_3 ==============
370405FROM runtimes_3 AS al2_v5
371406
407+ # Activate runtime versions specific to image version.
408+ RUN n $NODE_18_VERSION
409+ RUN pyenv global $PYTHON_311_VERSION
410+ RUN phpenv global $PHP_82_VERSION
411+ RUN rbenv global $RUBY_32_VERSION
412+ RUN goenv global $GOLANG_20_VERSION
413+ RUN dotnet new globaljson --force --sdk-version $DOTNET_6_GLOBAL_JSON_SDK_VERSION --roll-forward feature
414+
372415# Configure SSH
373416COPY ssh_config /root/.ssh/config
374417COPY runtimes.yml /codebuild/image/config/runtimes.yml
0 commit comments