From: Fatih Degirmenci Date: Fri, 10 Jan 2020 17:02:49 +0000 (+0000) Subject: Create Dockerfile to build Jenkins Docker Slaves X-Git-Url: https://gerrit.nordix.org/gitweb?a=commitdiff_plain;h=328166a4311aba6d0d66a7d71e14edb372fdeb90;p=infra%2Ftools.git Create Dockerfile to build Jenkins Docker Slaves 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- 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 --- diff --git a/infra/jenkins/slave-setup/docker-slave/Dockerfile b/infra/jenkins/slave-setup/docker-slave/Dockerfile new file mode 100644 index 0000000..32f72c6 --- /dev/null +++ b/infra/jenkins/slave-setup/docker-slave/Dockerfile @@ -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- +# +# 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