FROM jenkins/jenkins:lts

RUN /usr/local/bin/install-plugins.sh docker-plugin docker-slaves workflow-scm-step workflow-cps  pipeline-model-definition docker-workflow cloudbees-folder timestamper workflow-aggregator git gradle pipeline-maven artifactory maven-plugin ssh-slaves build-timeout pipeline-stage-view  antisamy-markup-formatter mailer matrix-auth junit findbugs maven-invoker-plugin pipeline-build-step credentials ws-cleanup email-ext ldap pam-auth subversion blueocean credentials-binding

COPY github/id_rsa /var/jenkins_home/.ssh/
COPY github/id_rsa.pub /var/jenkins_home/.ssh/

COPY jenkins/jenkins.crt /var/lib/jenkins/cert
COPY jenkins/jenkins.rsa /var/lib/jenkins/pk
COPY scripts/init.groovy /usr/share/jenkins/ref/init.groovy.d/init.groovy
COPY scripts/credentials.groovy /usr/share/jenkins/ref/init.groovy.d/credentials.groovy
COPY scripts/pipeline.groovy /usr/share/jenkins/ref/init.groovy.d/pipeline.groovy
COPY scripts/security.groovy /usr/share/jenkins/ref/init.groovy.d/security.groovy
COPY scripts/jdk.groovy /usr/share/jenkins/ref/init.groovy.d/jdk.groovy
COPY scripts/gradle.groovy /usr/share/jenkins/ref/init.groovy.d/gradle.groovy

ENV JENKINS_USER admin
ENV JENKINS_PASS ef8a7543087c4b999cbecdd57696f557
ENV GIT_URL "<Git URL to repo>"

ENV ORACLE_JDK_USER "<username>"
ENV ORACLE_JDK_PASSWORD "<password>"

ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false
ENV JENKINS_OPTS --httpPort=-1 --httpsPort=8083 --httpsCertificate=/var/lib/jenkins/cert --httpsPrivateKey=/var/lib/jenkins/pk
ENV JENKINS_SLAVE_AGENT_PORT 50001

USER root
RUN curl -L https://download.docker.com/linux/static/stable/x86_64/docker-17.12.0-ce.tgz -o docker-17.12.0-ce.tgz \
  && tar xzvf docker-17.12.0-ce.tgz \
  && mv docker/docker /usr/local/bin \
  && rm -r docker docker-17.12.0-ce.tgz

# Tuning the image to comply with Docker-in-Docker deployment
RUN apt-get update && apt-get install -y sudo
RUN echo "jenkins ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/jenkins && chmod 0440 /etc/sudoers.d/jenkins

# Tune the access to /var/run/docker.sock'
COPY docker-dind.sh /usr/local/bin/docker-dind.sh
RUN chmod a+x /usr/local/bin/docker-dind.sh

USER jenkins
EXPOSE 8083

ENTRYPOINT ["/usr/local/bin/docker-dind.sh", "/sbin/tini", "--", "/usr/local/bin/jenkins.sh"]
