Sign inSign up

organicvirender/jnlp-slave-java-build-tools

By organicvirender

•Updated over 5 years ago

Image
0

6.5K

organicvirender/jnlp-slave-java-build-tools repository overview

FROM jenkins/inbound-agent as builder

FROM ubuntu:20.04 LABEL name="Java Build Tools"
maintainer="Cloudbees CloudPlatform Security Members [email protected]⁠"
license="Apache-2.0"
version="latest"
summary="Convenient Docker image to build Java applications."
description="Convenient Docker image to build Java applications."

#================================================

⁠Customize sources for apt-get

#================================================ RUN DISTRIB_CODENAME=$(cat /etc/release | grep DISTRIB_CODENAME | cut -f2 -d'=')
&& echo "deb http://archive.ubuntu.com/ubuntu⁠ ${DISTRIB_CODENAME} main universe\n" > /etc/apt/sources.list
&& echo "deb http://archive.ubuntu.com/ubuntu⁠ ${DISTRIB_CODENAME}-updates main universe\n" >> /etc/apt/sources.list
&& echo "deb http://security.ubuntu.com/ubuntu⁠ ${DISTRIB_CODENAME}-security main universe\n" >> /etc/apt/sources.list

RUN apt-get update -qqy
&& apt-get -qqy --no-install-recommends install software-properties-common
&& add-apt-repository -y ppa:git-core/ppa

#========================

⁠Miscellaneous packages

⁠iproute which is surprisingly not available in ubuntu:15.04 but is available in ubuntu:latest

⁠OpenJDK11

⁠groff is for aws-cli

⁠tree is convenient for troubleshooting builds

#======================== RUN apt-get update -qqy
&& apt-get -qqy --no-install-recommends install
iproute2
openssh-client ssh-askpass
ca-certificates
gpg gpg-agent
openjdk-11-jdk
tar zip unzip
wget curl
git
build-essential
less nano tree
jq
python3 python3-pip groff
rsync
&& apt-get clean

⁠&& sed -i 's/securerandom.source=file:/dev/random/securerandom.source=file:/dev/urandom/' ./usr/lib/jvm/java-11-openjdk-amd64/jre/lib/security/java.security

⁠Update pip after install

RUN pip3 install --upgrade pip setuptools

RUN pip3 install yq

#==========

⁠Docker

#==========

RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg⁠ | apt-key add - RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu⁠ focal stable" RUN apt-get -qqy install --no-install-recommends docker-ce docker-ce-cli containerd.io RUN apt-get update RUN apt-get install sudo -y

#==========

⁠Maven

#========== ENV MAVEN_VERSION 3.6.3

RUN curl -fsSL http://archive.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz⁠ | tar xzf - -C /usr/share
&& mv /usr/share/apache-maven-$MAVEN_VERSION /usr/share/maven
&& ln -s /usr/share/maven/bin/mvn /usr/bin/mvn

ENV MAVEN_HOME /usr/share/maven

#==========

⁠Gradle

#==========

ENV GRADLE_VERSION 6.5.1

RUN wget -q https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip⁠ -P /tmp
&& unzip -d /opt/gradle /tmp/gradle-${GRADLE_VERSION}-bin.zip
&& ln -s /opt/gradle/gradle-${GRADLE_VERSION}/bin/gradle /usr/bin/gradle
&& rm /tmp/gradle-${GRADLE_VERSION}-bin.zip

#========================================

⁠Add normal user with passwordless sudo

#======================================== RUN useradd jenkins --shell /bin/bash --create-home
&& usermod -a -G sudo jenkins
&& echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers
&& echo 'jenkins ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
&& echo 'jenkins:secret' | chpasswd

#====================================

⁠AWS CLI

#==================================== RUN pip3 install awscli

⁠compatibility with CloudBees AWS CLI Plugin which expects pip to be installed as user

RUN mkdir -p /home/jenkins/.local/bin/
&& ln -s /usr/local/bin/pip /home/jenkins/.local/bin/pip
&& chown -R jenkins:jenkins /home/jenkins/.local

#====================================

⁠Kubernetes CLI

⁠See https://storage.googleapis.com/kubernetes-release/release/stable.txt⁠

#==================================== RUN curl https://storage.googleapis.com/kubernetes-release/release/v1.19.3/bin/linux/amd64/kubectl⁠ -o /usr/local/bin/kubectl && chmod +x /usr/local/bin/kubectl

#====================================

⁠ARGOCD CLI

#==================================== RUN wget -O /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/v1.7.12/argocd-linux-amd64⁠ && chmod +x /usr/local/bin/argocd

#==================

⁠MAVEN Cache Folder

#================== RUN mkdir -p /home/jenkins/.m2 RUN mkdir -p /home/ubuntu/.m2

#==========

⁠Slave

#==========

COPY --from=builder /usr/local/bin/jenkins-slave /usr/local/bin/jenkins-agent COPY --from=builder /usr/share/jenkins/agent.jar /usr/share/jenkins/agent.jar

USER root

RUN chmod +x /usr/local/bin/jenkins-agent
&& ln -s /usr/local/bin/jenkins-agent /usr/local/bin/jenkins-slave RUN chmod 644 /usr/share/jenkins/agent.jar
&& ln -sf /usr/share/jenkins/agent.jar /usr/share/jenkins/slave.jar

USER jenkins

ENTRYPOINT ["jenkins-agent"]

Tag summary

Content type

Image

Digest

Size

805.6 MB

Last updated

over 5 years ago

docker pull organicvirender/jnlp-slave-java-build-tools