1+ # Copyright 2020-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+ #
3+ # Licensed under the Amazon Software License (the "License"). You may not use this file except in compliance with the License.
4+ # A copy of the License is located at
5+ #
6+ # http://aws.amazon.com/asl/
7+ #
8+ # or in the "license" file accompanying this file.
9+ # This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or implied.
10+ # See the License for the specific language governing permissions and limitations under the License.
11+
12+ FROM public.ecr.aws/lambda/java:11-arm64 AS core
13+
14+ # Install SSH, and other utilities
15+ RUN set -ex \
16+ && yum install -y -q openssh-clients \
17+ && mkdir ~/.ssh \
18+ && mkdir -p /opt/tools \
19+ && mkdir -p /codebuild/image/config \
20+ && touch ~/.ssh/known_hosts \
21+ && ssh-keyscan -t rsa,dsa,ed25519,ecdsa -H github.com >> ~/.ssh/known_hosts \
22+ && ssh-keyscan -t rsa,dsa,ed25519,ecdsa -H bitbucket.org >> ~/.ssh/known_hosts \
23+ && chmod 600 ~/.ssh/known_hosts \
24+ && rpm --import https://download.mono-project.com/repo/xamarin.gpg \
25+ && curl https://download.mono-project.com/repo/centos7-stable.repo | tee /etc/yum.repos.d/mono-centos7-stable.repo \
26+ && yum groupinstall -y -q "Development tools" \
27+ && yum install -y -q \
28+ ImageMagick asciidoc bzip2-devel cvs cvsps \
29+ docbook-dtds docbook-style-xsl e2fsprogs expat-devel expect fakeroot \
30+ glib2-devel groff gzip icu iptables jq krb5-server libargon2-devel \
31+ libcurl-devel libdb-devel libedit-devel libevent-devel libffi-devel \
32+ libicu-devel libjpeg-devel libpng-devel libserf sqlite-devel \
33+ libtidy-devel libunwind libwebp-devel libxml2-devel libxslt libxslt-devel \
34+ libyaml-devel libzip-devel mariadb105-devel mercurial mlocate \
35+ ncurses-devel oniguruma-devel openssl openssl-devel perl-DBD-SQLite \
36+ perl-DBI perl-HTTP-Date perl-TimeDate perl-YAML-LibYAML \
37+ postgresql-devel procps-ng python-configobj readline-devel rsync sgml-common \
38+ subversion-perl tar tcl tk vim wget which xfsprogs xmlto xorg-x11-server-Xvfb xz-devel \
39+ amazon-ecr-credential-helper \
40+ && rm /etc/yum.repos.d/mono-centos7-stable.repo
41+
42+ RUN /usr/sbin/useradd codebuild-user
43+
44+ ENV HOME="/tmp"
45+ ENV LAMBDA_USER_HOME="/tmp/opt"
46+ # =======================End of layer: core =================
47+
48+ FROM core AS tools
49+
50+ # Install Git
51+ RUN set -ex \
52+ && GIT_VERSION=2.41.0 \
53+ && GIT_TAR_FILE=git-$GIT_VERSION.tar.gz \
54+ && GIT_SRC=https://github.com/git/git/archive/v${GIT_VERSION}.tar.gz \
55+ && curl -L -o $GIT_TAR_FILE $GIT_SRC \
56+ && tar zxf $GIT_TAR_FILE \
57+ && cd git-$GIT_VERSION \
58+ && make -j4 prefix=/usr \
59+ && make install prefix=/usr \
60+ && cd .. && rm -rf git-$GIT_VERSION \
61+ && rm -rf $GIT_TAR_FILE /tmp/*
62+
63+ # Install AWS CLI v2
64+ # https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html
65+ RUN curl https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip -o /tmp/awscliv2.zip \
66+ && unzip -q /tmp/awscliv2.zip -d /opt \
67+ && /opt/aws/install --update -i /usr/local/aws-cli -b /usr/local/bin \
68+ && rm /tmp/awscliv2.zip \
69+ && rm -rf /opt/aws \
70+ && aws --version
71+
72+ # # Install AWS SAM CLI
73+ RUN yum install -y python3 python3-devel \
74+ && pip3 install --upgrade pip \
75+ && pip3 install aws-sam-cli \
76+ && sam --version
77+
78+ # AWS Tools
79+ # https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_CLI_installation.html
80+ RUN curl -sS -o /usr/local/bin/aws-iam-authenticator https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.1/2023-04-19/bin/linux/arm64/aws-iam-authenticator \
81+ && curl -sS -o /usr/local/bin/kubectl https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.1/2023-04-19/bin/linux/arm64/kubectl \
82+ && curl -sS -o /usr/local/bin/ecs-cli https://s3.amazonaws.com/amazon-ecs-cli/ecs-cli-linux-arm64-latest \
83+ && curl -sS -L https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_Linux_arm64.tar.gz | tar xz -C /usr/local/bin \
84+ && chmod +x /usr/local/bin/kubectl /usr/local/bin/aws-iam-authenticator /usr/local/bin/ecs-cli /usr/local/bin/eksctl
85+ # ======================= End of layer: tools =================
86+
87+ FROM tools AS java_runtime
88+
89+ ENV MAVEN_HOME="/opt/maven" \
90+ MAVEN_VERSION=3.9.4 \
91+ GRADLE_VERSION=8.2.1 \
92+ ANT_VERSION=1.10.13 \
93+ GRADLE_PATH="$SRC_DIR/gradle" \
94+ MAVEN_DOWNLOAD_SHA512="deaa39e16b2cf20f8cd7d232a1306344f04020e1f0fb28d35492606f647a60fe729cc40d3cba33e093a17aed41bd161fe1240556d0f1b80e773abd408686217e" \
95+ GRADLE_DOWNLOADS_SHA256="7c3ad722e9b0ce8205b91560fd6ce8296ac3eadf065672242fd73c06b8eeb6ee" \
96+ ANT_DOWNLOAD_SHA512="de4ac604629e39a86a306f0541adb3775596909ad92feb8b7de759b1b286417db24f557228737c8b902d6abf722d2ce5bb0c3baa3640cbeec3481e15ab1958c9"
97+
98+ ARG MAVEN_CONFIG_HOME="/root/.m2"
99+
100+ # Install Maven
101+ RUN set -ex \
102+ && mkdir -p $MAVEN_HOME \
103+ && curl -LSso /var/tmp/apache-maven-$MAVEN_VERSION-bin.tar.gz https://apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz \
104+ && echo "$MAVEN_DOWNLOAD_SHA512 /var/tmp/apache-maven-$MAVEN_VERSION-bin.tar.gz" | sha512sum -c - \
105+ && tar xzvf /var/tmp/apache-maven-$MAVEN_VERSION-bin.tar.gz -C $MAVEN_HOME --strip-components=1 \
106+ && rm /var/tmp/apache-maven-$MAVEN_VERSION-bin.tar.gz \
107+ && /usr/sbin/update-alternatives --install /usr/bin/mvn mvn /opt/maven/bin/mvn 10000 \
108+ && mkdir -p $MAVEN_CONFIG_HOME \
109+ # Install Gradle
110+ && mkdir -p $GRADLE_PATH \
111+ && wget -nv "https://services.gradle.org/distributions/gradle-$GRADLE_VERSION-all.zip" -O "$GRADLE_PATH/gradle-$GRADLE_VERSION-all.zip" \
112+ && unzip "$GRADLE_PATH/gradle-$GRADLE_VERSION-all.zip" -d /usr/local \
113+ && echo "$GRADLE_DOWNLOADS_SHA256 $GRADLE_PATH/gradle-$GRADLE_VERSION-all.zip" | sha256sum -c - \
114+ && rm "$GRADLE_PATH/gradle-$GRADLE_VERSION-all.zip" \
115+ # Install default GRADLE_VERSION to path
116+ && ln -s /usr/local/gradle-$GRADLE_VERSION/bin/gradle /usr/bin/gradle \
117+ && rm -rf $GRADLE_PATH \
118+ # Install Ant
119+ && curl -LSso /var/tmp/apache-ant-$ANT_VERSION-bin.tar.gz https://archive.apache.org/dist/ant/binaries/apache-ant-$ANT_VERSION-bin.tar.gz \
120+ && echo "$ANT_DOWNLOAD_SHA512 /var/tmp/apache-ant-$ANT_VERSION-bin.tar.gz" | sha512sum -c - \
121+ && tar -xzf /var/tmp/apache-ant-$ANT_VERSION-bin.tar.gz -C /opt \
122+ && rm /var/tmp/apache-ant-$ANT_VERSION-bin.tar.gz \
123+ && /usr/sbin/update-alternatives --install /usr/bin/ant ant /opt/apache-ant-$ANT_VERSION/bin/ant 10000
124+
125+ COPY tools/runtime_configs/maven/settings.xml $MAVEN_HOME/conf/settings.xml
126+
127+ ENV GRADLE_USER_HOME $LAMBDA_USER_HOME/.gradle
128+ # =======================End of layer: java_runtime =================
129+
130+ FROM java_runtime AS al_v1
131+
132+ COPY legal/bill_of_material.txt /usr/share/doc/bill_of_material.txt
133+
134+ # Cleanup
135+ RUN rm -fr /tmp/*
136+ # =======================End of layer: al_lambda_v1 =================
0 commit comments