@@ -36,7 +36,7 @@ RUN set -ex \
36
36
perl-DBI perl-HTTP-Date perl-TimeDate perl-YAML-LibYAML \
37
37
postgresql-devel procps-ng python-configobj readline-devel rsync sgml-common \
38
38
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 \
40
40
&& rm /etc/yum.repos.d/mono-centos7-stable.repo
41
41
42
42
RUN useradd codebuild-user
@@ -45,9 +45,17 @@ RUN useradd codebuild-user
45
45
46
46
FROM core AS tools
47
47
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
+
48
56
# Install Git
49
57
RUN set -ex \
50
- && GIT_VERSION=2.40 .1 \
58
+ && GIT_VERSION=2.42 .1 \
51
59
&& GIT_TAR_FILE=git-$GIT_VERSION.tar.gz \
52
60
&& GIT_SRC=https://github.com/git/git/archive/v${GIT_VERSION}.tar.gz \
53
61
&& curl -L -o $GIT_TAR_FILE $GIT_SRC \
@@ -60,9 +68,9 @@ RUN set -ex \
60
68
61
69
# Install stunnel
62
70
RUN set -ex \
63
- && STUNNEL_VERSION=5.69 \
71
+ && STUNNEL_VERSION=5.71 \
64
72
&& STUNNEL_TAR=stunnel-$STUNNEL_VERSION.tar.gz \
65
- && STUNNEL_SHA256="1ff7d9f30884c75b98c8a0a4e1534fa79adcada2322635e6787337b4e38fdb81 " \
73
+ && STUNNEL_SHA256="f023aae837c2d32deb920831a5ee1081e11c78a5d57340f8e6f0829f031017f5 " \
66
74
&& curl -o $STUNNEL_TAR https://www.stunnel.org/archive/5.x/$STUNNEL_TAR && echo "$STUNNEL_SHA256 $STUNNEL_TAR" | sha256sum --check && tar xfz $STUNNEL_TAR \
67
75
&& cd stunnel-$STUNNEL_VERSION \
68
76
&& ./configure \
@@ -92,11 +100,6 @@ RUN set -ex \
92
100
&& wget -qO /usr/local/bin/dotnet-install.sh https://dot.net/v1/dotnet-install.sh \
93
101
&& chmod +x /usr/local/bin/dotnet-install.sh
94
102
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
-
100
103
# #ruby
101
104
ENV RBENV_SRC_DIR="/usr/local/rbenv"
102
105
@@ -110,7 +113,7 @@ RUN set -ex \
110
113
&& sh $RUBY_BUILD_SRC_DIR/install.sh
111
114
112
115
# #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
114
117
ENV PATH="/root/.pyenv/shims:/root/.pyenv/bin:$PATH"
115
118
116
119
# #php
@@ -132,15 +135,18 @@ FROM tools AS runtimes_1
132
135
ENV JAVA_17_HOME="/usr/lib/jvm/java-17-amazon-corretto.x86_64" \
133
136
JDK_17_HOME="/usr/lib/jvm/java-17-amazon-corretto.x86_64" \
134
137
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 \
136
142
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 \
139
145
SBT_VERSION=1.8.3 \
140
146
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 " \
144
150
SBT_DOWNLOAD_SHA256="21F4210786FD68FD15DCA3F4C8EE9CAE0DB249C54E1B0EF6E829E9FA4936423A"
145
151
146
152
ARG MAVEN_CONFIG_HOME="/root/.m2"
@@ -153,6 +159,7 @@ RUN set -x \
153
159
&& rpm --import https://yum.corretto.aws/corretto.key \
154
160
&& curl -L -o /etc/yum.repos.d/corretto.repo https://yum.corretto.aws/corretto.repo \
155
161
&& yum install -y -q java-17-amazon-corretto java-17-amazon-corretto-devel \
162
+ && yum install -y -q java-21-amazon-corretto-devel \
156
163
&& update-ca-trust \
157
164
&& for tool_path in $JAVA_HOME/bin/*; do \
158
165
tool=`basename $tool_path`; \
@@ -231,14 +238,23 @@ RUN curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o /tmp/awscli
231
238
&& aws --version
232
239
233
240
# 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"
235
245
ENV DOTNET_ROOT="/root/.dotnet"
236
246
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 \
239
249
&& dotnet --list-sdks \
240
250
&& rm -rf /tmp/*
241
251
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
+
242
258
# # Trigger the population of the local package cache
243
259
ENV NUGET_XMLDOC_MODE skip
244
260
RUN set -ex \
@@ -250,18 +266,25 @@ RUN set -ex \
250
266
&& rm -rf /tmp/NuGetScratch
251
267
# **************** END Powershell *******************************************************
252
268
253
-
254
269
# **************** NODEJS ****************************************************
255
270
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"
257
274
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/*
265
288
266
289
# **************** END NODEJS ****************************************************
267
290
@@ -275,24 +298,35 @@ RUN rbenv install $RUBY_32_VERSION && rm -rf /tmp/* && rbenv global $RUBY_32_VER
275
298
276
299
# **************** PYTHON *****************************************************
277
300
# 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
280
304
ENV PYYAML_VERSION=5.4.1
281
305
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/*
282
308
COPY 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/*
285
310
RUN set -ex \
311
+ && pyenv global $PYTHON_312_VERSION \
286
312
&& pip3 install --no-cache-dir --upgrade --force-reinstall "pip==$PYTHON_PIP_VERSION" \
287
313
&& pip3 install wheel \
314
+ && pip3 install --no-cache-dir --upgrade 'setuptools==67.7.2' boto3 pipenv virtualenv \
288
315
&& 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 \
290
324
&& pip3 uninstall cython --yes
291
325
292
326
# **************** END PYTHON *****************************************************
293
327
294
328
# **************** PHP ****************************************************
295
- ENV PHP_82_VERSION="8.2.7 "
329
+ ENV PHP_82_VERSION="8.2.12 "
296
330
297
331
COPY tools/runtime_configs/php/$PHP_82_VERSION /root/.phpenv/plugins/php-build/share/php-build/definitions/$PHP_82_VERSION
298
332
RUN 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 -
303
337
# **************** END PHP ****************************************************
304
338
305
339
# **************** 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"
307
342
ENV GOENV_DISABLE_GOPATH=1
308
343
ENV GOPATH="/go"
309
344
310
345
RUN goenv install $GOLANG_20_VERSION && rm -rf /tmp/* && \
346
+ goenv install $GOLANG_21_VERSION && rm -rf /tmp/* && \
311
347
goenv global $GOLANG_20_VERSION && \
312
348
go env -w GO111MODULE=auto
313
349
@@ -321,7 +357,7 @@ FROM runtimes_1 AS runtimes_2
321
357
ENV DOCKER_BUCKET="download.docker.com" \
322
358
DOCKER_CHANNEL="stable" \
323
359
DIND_COMMIT="3b5fac462d21ca164b3778647420016315289034" \
324
- DOCKER_COMPOSE_VERSION="2.17.3 " \
360
+ DOCKER_COMPOSE_VERSION="2.23.1 " \
325
361
DOCKER_BUILDX_VERSION="0.11.0"
326
362
327
363
ENV DOCKER_SHA256="544262F4A3621222AFB79960BFAD4D486935DAB80893478B5CC9CF8EBAF409AE"
@@ -349,14 +385,13 @@ RUN set -ex \
349
385
# Ensure docker-compose and docker compose work
350
386
&& docker-compose version \
351
387
&& docker compose version \
352
- # Add docker buildx tool \
388
+ # Add docker buildx tool
353
389
&& 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 \
354
390
&& chmod +x /usr/local/bin/dind /usr/local/lib/docker/cli-plugins/docker-buildx \
355
391
&& ln -s /usr/local/lib/docker/cli-plugins/docker-buildx /usr/local/bin/docker-buildx \
356
392
# Ensure docker-buildx works
357
393
&& docker-buildx version \
358
394
&& docker buildx version
359
-
360
395
# =======================End of layer: runtimes_2 =================
361
396
FROM runtimes_2 AS runtimes_3
362
397
@@ -369,6 +404,14 @@ RUN set -ex \
369
404
# ===================END of runtimes_3 ==============
370
405
FROM runtimes_3 AS al2_v5
371
406
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
+
372
415
# Configure SSH
373
416
COPY ssh_config /root/.ssh/config
374
417
COPY runtimes.yml /codebuild/image/config/runtimes.yml
0 commit comments