From 8501f5d0bbf767f1511aac8945f0079c07e46f37 Mon Sep 17 00:00:00 2001 From: Andy Thompson Date: Fri, 29 Apr 2022 09:21:40 +0100 Subject: [PATCH 1/2] Fix issue with spryker jenkins-runner running as root user --- .../root/lib/task/jenkins/setup.sh | 4 +++ .../root/lib/task/jenkins/start.sh | 21 +------------ .../root/usr/local/bin/jenkins-agent-start.sh | 31 +++++++++++++++++++ 3 files changed, 36 insertions(+), 20 deletions(-) create mode 100755 src/spryker/docker/image/jenkins-runner/root/usr/local/bin/jenkins-agent-start.sh diff --git a/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/setup.sh b/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/setup.sh index 076529691..acbf5610a 100644 --- a/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/setup.sh +++ b/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/setup.sh @@ -10,4 +10,8 @@ function task_jenkins_setup() # link php where it is expected by cron.conf ln -s /usr/local/bin/php /usr/bin/php + + # setup www-data folders + mkdir /var/www/.jenkins /data + chown www-data:www-data /var/www/.jenkins /data } diff --git a/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/start.sh b/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/start.sh index 49516ec2c..6cf036ab7 100644 --- a/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/start.sh +++ b/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/start.sh @@ -1,25 +1,6 @@ #!/bin/bash -function _trap_jenkins_exit() -{ - echo 'Terminating jenkins agent' >&2 - local CHILD_PIDS - mapfile -t CHILD_PIDS < <(jobs -p) - kill -TERM "${CHILD_PIDS[@]}" - wait - app jenkins unregister -} - function task_jenkins_start() { - local -r JENKINS_RUNNER_NAME=$(hostname) - - trap _trap_jenkins_exit EXIT - - app jenkins:register - - java -jar /usr/local/bin/jenkins-cli.jar -s "$JENKINS_URL" offline-node "" - java -jar /usr/local/bin/jenkins-slave.jar -jnlpUrl "$JENKINS_URL/computer/$JENKINS_RUNNER_NAME/slave-agent.jnlp" & - - wait + exec su -s /usr/local/bin/jenkins-agent-start.sh www-data } diff --git a/src/spryker/docker/image/jenkins-runner/root/usr/local/bin/jenkins-agent-start.sh b/src/spryker/docker/image/jenkins-runner/root/usr/local/bin/jenkins-agent-start.sh new file mode 100755 index 000000000..7d19c6f41 --- /dev/null +++ b/src/spryker/docker/image/jenkins-runner/root/usr/local/bin/jenkins-agent-start.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +set -o errexit +set -o nounset +set -o pipefail + +function _trap_jenkins_exit() +{ + echo 'Terminating jenkins agent' >&2 + local CHILD_PIDS + mapfile -t CHILD_PIDS < <(jobs -p) + kill -TERM "${CHILD_PIDS[@]}" + wait + app jenkins unregister +} + +function start() +{ + local -r JENKINS_RUNNER_NAME=$(hostname) + + trap _trap_jenkins_exit EXIT + + app jenkins:register + + java -jar /usr/local/bin/jenkins-cli.jar -s "$JENKINS_URL" offline-node "" + java -jar /usr/local/bin/jenkins-slave.jar -jnlpUrl "$JENKINS_URL/computer/$JENKINS_RUNNER_NAME/slave-agent.jnlp" & + + wait +} + +start From ed7fa7c0c4c641cb8874cf5ba46e941464fc7700 Mon Sep 17 00:00:00 2001 From: Andy Thompson Date: Fri, 29 Apr 2022 10:17:45 +0100 Subject: [PATCH 2/2] Move static commands to Dockerfile --- src/spryker/docker/image/jenkins-runner/Dockerfile.twig | 8 +++++++- .../image/jenkins-runner/root/lib/task/jenkins/setup.sh | 7 ------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/spryker/docker/image/jenkins-runner/Dockerfile.twig b/src/spryker/docker/image/jenkins-runner/Dockerfile.twig index 95c3275cc..be4261cb0 100644 --- a/src/spryker/docker/image/jenkins-runner/Dockerfile.twig +++ b/src/spryker/docker/image/jenkins-runner/Dockerfile.twig @@ -16,7 +16,13 @@ RUN echo 'APT::Install-Recommends 0;' >> /etc/apt/apt.conf.d/01norecommends \ # clean \ && apt-get auto-remove -qq -y \ && apt-get clean \ - && rm -rf /var/lib/apt/lists/* + && rm -rf /var/lib/apt/lists/* \ + # setup \ + # link php where it is expected by cron.conf \ + && ln -s /usr/local/bin/php /usr/bin/php \ + # setup www-data folders \ + && mkdir /var/www/.jenkins /data \ + && chown www-data:www-data /var/www/.jenkins /data COPY .my127ws/docker/image/jenkins-runner/root / diff --git a/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/setup.sh b/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/setup.sh index acbf5610a..880893fae 100644 --- a/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/setup.sh +++ b/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/setup.sh @@ -7,11 +7,4 @@ function task_jenkins_setup() curl --fail --silent --show-error --location --output /usr/local/bin/jenkins-cli.jar "$JENKINS_URL/jnlpJars/jenkins-cli.jar" curl --fail --silent --show-error --location --output /usr/local/bin/jenkins-slave.jar "$JENKINS_URL/jnlpJars/slave.jar" - - # link php where it is expected by cron.conf - ln -s /usr/local/bin/php /usr/bin/php - - # setup www-data folders - mkdir /var/www/.jenkins /data - chown www-data:www-data /var/www/.jenkins /data }