Create Dockerfile to build Jenkins Docker Slaves 40/3340/1
authorFatih Degirmenci <fdegir@gmail.com>
Fri, 10 Jan 2020 17:02:49 +0000 (17:02 +0000)
committerFatih Degirmenci <fdegir@gmail.com>
Fri, 10 Jan 2020 17:02:49 +0000 (17:02 +0000)
This Dockerfile is used for building container images to
use as Jenkins Slaves for Nordix Infra. The image is configured
and tested for running
  - Jenkins Job Builder Verify and Merge jobs using tox
  - Cloud Infra Engine ansible-lint, yamllist, and shellcheck using tox

The image built using this Dockerfile is currently being stored on Docker Hub
with the name nordixorg/infra-tools-docker-slave-ubuntu1804 which can be seen
using the link below.
  https://hub.docker.com/repository/docker/nordixorg/infra-tools-docker-slave-ubuntu1804
The images are automatically attached to Jenkins as slaves using Jenkins
Docker plugin with a name that looks like infra-ubuntu1804-<random_characters>

In order to use this image as slave for your jobs, you need to use label
infra-tools-docker-slave-ubuntu1804 so Jenkins schedules your job on this slave
which gets provisioned by Jenkins Docker plugin. Please note that it takes few
seconds before the slave becomes ready and job starts running.

Change-Id: I13c03bb9c76fedaf0222376d35f84a67a4266662

infra/jenkins/slave-setup/docker-slave/Dockerfile [new file with mode: 0644]

diff --git a/infra/jenkins/slave-setup/docker-slave/Dockerfile b/infra/jenkins/slave-setup/docker-slave/Dockerfile
new file mode 100644 (file)
index 0000000..32f72c6
--- /dev/null
@@ -0,0 +1,52 @@
+# ============LICENSE_START=======================================================
+#  Copyright (C) 2019 The Nordix Foundation. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+#-------------------------------------------------------------------------------
+# This Dockerfile is used for building container images to
+# use as Jenkins Slaves for Nordix Infra. The image is configured
+# and tested for running
+#   - Jenkins Job Builder Verify and Merge jobs using tox
+#   - Cloud Infra Engine ansible-lint, yamllist, and shellcheck using tox
+#
+# The image built using this Dockerfile is currently being stored on Docker Hub
+# with the name nordixorg/infra-tools-docker-slave-ubuntu1804 which can be seen
+# using the link below.
+#   https://hub.docker.com/repository/docker/nordixorg/infra-tools-docker-slave-ubuntu1804
+# The images are automatically attached to Jenkins as slaves using Jenkins
+# Docker plugin with a name that looks like infra-ubuntu1804-<random_characters>
+#
+# In order to use this image as slave for your jobs, you need to use label
+# infra-tools-docker-slave-ubuntu1804 so Jenkins schedules your job on this slave
+# which gets provisioned by Jenkins Docker plugin. Please note that it takes few
+# seconds before the slave becomes ready and job starts running.
+#-------------------------------------------------------------------------------
+FROM jenkins/jnlp-slave
+USER root
+# we need few basic packages in order to use base image as Jenkins slave
+RUN apt update && apt install -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew -q=3 -y git vim sudo
+# we install system packages as part of Jenkins verify jobs so
+# jenkins user needs to be able to run sudo
+RUN usermod -aG sudo jenkins
+# without tty
+RUN sed -i "s/^Defaults.*env_reset/#&\nDefaults:jenkins  \!requiretty/" /etc/sudoers
+# and without password
+RUN sed -i "s/^%sudo.*ALL/%sudo  ALL=(ALL:ALL)   NOPASSWD: ALL/" /etc/sudoers
+# switch back to jenkins user
+USER jenkins
+# create slave_root folder same as what we use on regular slaves
+RUN mkdir -p /home/jenkins/nordix/slave_root