-
Notifications
You must be signed in to change notification settings - Fork 273
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update the clients release docker image to AlmaLinux 8
Allows upgrading to .NET SDK 8.0
- Loading branch information
Showing
2 changed files
with
141 additions
and
0 deletions.
There are no files selected for viewing
141 changes: 141 additions & 0 deletions
141
docker/ci/dockerfiles/current/release.almalinux8.clients.x64.arm64.dockerfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
# Copyright OpenSearch Contributors | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# | ||
# The OpenSearch Contributors require contributions made to | ||
# this file be licensed under the Apache-2.0 license or a | ||
# compatible open source license. | ||
|
||
# This is a docker image specifically for standardize the ci/cd environment | ||
# for both developers and ci/cd pipeline for releasing Opensearch clients and other products | ||
# Please read the README.md file for all the information before using this dockerfile | ||
|
||
# Related dockerhub image: opensearchstaging/ci-runner:release-almalinux8-clients-v* | ||
|
||
|
||
FROM almalinux:8 | ||
|
||
ARG MAVEN_DIR=/usr/local/apache-maven | ||
ARG CONTAINER_USER=ci-runner | ||
ARG CONTAINER_USER_HOME=/home/ci-runner | ||
|
||
# Ensure localedef running correct with root permission | ||
USER 0 | ||
|
||
# Add normal dependencies | ||
RUN dnf clean all && \ | ||
dnf update -y && \ | ||
dnf install -y which curl git gnupg2 tar net-tools procps-ng python39 python39-devel python39-pip zip unzip jq | ||
|
||
# Add Python dependencies | ||
RUN dnf install -y @development zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel findutils | ||
|
||
# Add Yarn dependencies | ||
RUN dnf groupinstall -y "Development Tools" && dnf clean all && rm -rf /var/cache/dnf/* | ||
|
||
# Installing dotnet | ||
ARG DOT_NET_LIST="8.0" | ||
RUN for dotnet_version in $DOT_NET_LIST; do dnf install -y dotnet-sdk-$dotnet_version; done | ||
|
||
# Tools setup | ||
COPY --chown=0:0 config/yq-setup.sh config/gh-setup.sh /tmp/ | ||
RUN dnf install -y go && /tmp/yq-setup.sh && /tmp/gh-setup.sh | ||
|
||
# Install JDK | ||
RUN curl -SL https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jdk_x64_linux_hotspot_11.0.15_10.tar.gz -o /opt/jdk11.tar.gz && \ | ||
mkdir -p /opt/java/openjdk-11 && \ | ||
tar -xzf /opt/jdk11.tar.gz --strip-components 1 -C /opt/java/openjdk-11/ && \ | ||
rm /opt/jdk11.tar.gz | ||
|
||
# Create user group | ||
RUN groupadd -g 1000 $CONTAINER_USER && \ | ||
useradd -u 1000 -g 1000 -d $CONTAINER_USER_HOME $CONTAINER_USER && \ | ||
mkdir -p $CONTAINER_USER_HOME && \ | ||
chown -R 1000:1000 $CONTAINER_USER_HOME | ||
|
||
# ENV JDK | ||
ENV JAVA_HOME=/opt/java/openjdk-11 | ||
ENV PATH=$PATH:$JAVA_HOME/bin | ||
|
||
# Installing higher version of maven 3.8.x | ||
RUN export MAVEN_URL=`curl -s https://maven.apache.org/download.cgi | grep -Eo '["\047].*.bin.tar.gz["\047]' | tr -d '"' | uniq | head -n 1` && \ | ||
mkdir -p $MAVEN_DIR && (curl -s $MAVEN_URL | tar xzf - --strip-components=1 -C $MAVEN_DIR) && \ | ||
echo "export M2_HOME=$MAVEN_DIR" > /etc/profile.d/maven_path.sh && \ | ||
echo "export M2=\$M2_HOME/bin" >> /etc/profile.d/maven_path.sh && \ | ||
echo "export PATH=\$M2:\$PATH" >> /etc/profile.d/maven_path.sh && \ | ||
ln -sfn $MAVEN_DIR/bin/mvn /usr/local/bin/mvn | ||
|
||
# Setup Shared Memory | ||
RUN chmod -R 777 /dev/shm | ||
|
||
# Install PKG builder dependencies with rvm | ||
RUN curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - && \ | ||
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import - && \ | ||
curl -sSL https://get.rvm.io | bash -s stable | ||
|
||
# Switch shell for rvm related commands | ||
SHELL ["/bin/bash", "-lc"] | ||
CMD ["/bin/bash", "-l"] | ||
|
||
# Install ruby / rpm / fpm related dependencies | ||
RUN . /etc/profile.d/rvm.sh && \ | ||
rvm install 2.6.0 && \ | ||
rvm install 3.1.2 && \ | ||
rvm install jruby-9.3.0.0 && \ | ||
rvm --default use 2.6.0 && \ | ||
dnf install -y rpm-build rpm-sign createrepo pinentry && \ | ||
dnf clean all | ||
|
||
ENV RUBY_HOME=/usr/local/rvm/rubies/ruby-2.6.0/bin | ||
ENV RVM_HOME=/usr/local/rvm/bin | ||
ENV GEM_HOME=$CONTAINER_USER_HOME/.gem | ||
ENV GEM_PATH=$GEM_HOME | ||
ENV PATH=$RUBY_HOME:$RVM_HOME:$PATH | ||
|
||
# Installing Python binary | ||
RUN update-alternatives --set python /usr/bin/python3.9 && \ | ||
update-alternatives --set python3 /usr/bin/python3.9 && \ | ||
pip3 install pip==23.1.2 && pip3 install twine==4.0.2 cmake==3.24.1.1 | ||
|
||
# Installing osslsigncode | ||
RUN dnf install -y libcurl-devel && dnf clean all && \ | ||
mkdir -p /tmp/osslsigncode && cd /tmp/osslsigncode && \ | ||
curl -sSL -o- https://github.com/mtrojnar/osslsigncode/archive/refs/tags/2.5.tar.gz | tar -xz --strip-components 1 && \ | ||
mkdir -p build && cd build && \ | ||
cmake -S .. && cmake --build . && cmake --install . && \ | ||
osslsigncode --version | ||
|
||
# Change User | ||
USER $CONTAINER_USER | ||
WORKDIR $CONTAINER_USER_HOME | ||
|
||
# Installing rust cargo | ||
RUN curl https://sh.rustup.rs -sSf | bash -s -- -y | ||
|
||
ENV CARGO_PATH=$CONTAINER_USER_HOME/.cargo/bin | ||
ENV PATH=$CARGO_PATH:$PATH | ||
|
||
# nvm environment variables | ||
ENV NVM_DIR $CONTAINER_USER_HOME/.nvm | ||
ENV NODE_VERSION 16.20.0 | ||
ARG NODE_VERSION_LIST="10.24.1 14.19.1 14.20.0 14.20.1 14.21.3 16.20.0" | ||
|
||
# Installing nvm | ||
# https://github.com/creationix/nvm#install-script | ||
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash | ||
# Installing node and npm | ||
COPY --chown=$CONTAINER_USER:$CONTAINER_USER config/yarn-version.sh /tmp | ||
RUN source $NVM_DIR/nvm.sh && \ | ||
for node_version in $NODE_VERSION_LIST; do nvm install $node_version; npm install -g yarn@`/tmp/yarn-version.sh main`; done | ||
# Add node and npm to path so the commands are available | ||
ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules | ||
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH | ||
# We use the version test to check if packages installed correctly | ||
# And get added to the PATH | ||
# This will fail the docker build if any of the packages not exist | ||
RUN node -v | ||
RUN npm -v | ||
RUN yarn -v | ||
RUN openssl version | ||
RUN osslsigncode --version | ||
RUN dotnet --version | ||
RUN cargo --version |
File renamed without changes.