Persist the permissions of the source file when copying overrides.
If, for whatever reason, a file has been created on the Jenkins home volume with the wrong permissions (eg. ssh config/keys etc) then it is currently impossible to override those permissions without going into the volume and manually editing them. This change updates the `copy_reference_file` function to use `cp -p`, which preserves mode, ownership and timestamps of the source files instead of the destination file being overwritten.
This commit is contained in:
parent
491e6a1209
commit
aa517f2db1
|
@ -1 +1,4 @@
|
||||||
*.tmp
|
*.tmp
|
||||||
|
bats/
|
||||||
|
tests/functions/init.groovy.d/
|
||||||
|
tests/functions/copy_reference_file.log
|
|
@ -98,7 +98,7 @@ copy_reference_file() {
|
||||||
action=${action:-"INSTALLED"}
|
action=${action:-"INSTALLED"}
|
||||||
log=true
|
log=true
|
||||||
mkdir -p "$JENKINS_HOME/${dir:23}"
|
mkdir -p "$JENKINS_HOME/${dir:23}"
|
||||||
cp -r "${f}" "$JENKINS_HOME/${rel}";
|
cp -pr "${f}" "$JENKINS_HOME/${rel}";
|
||||||
# pin plugins on initial copy
|
# pin plugins on initial copy
|
||||||
touch "$JENKINS_HOME/${rel}.pinned"
|
touch "$JENKINS_HOME/${rel}.pinned"
|
||||||
echo "$image_version" > "$JENKINS_HOME/${version_marker}"
|
echo "$image_version" > "$JENKINS_HOME/${version_marker}"
|
||||||
|
@ -112,7 +112,7 @@ copy_reference_file() {
|
||||||
action="INSTALLED"
|
action="INSTALLED"
|
||||||
log=true
|
log=true
|
||||||
mkdir -p "$JENKINS_HOME/${dir:23}"
|
mkdir -p "$JENKINS_HOME/${dir:23}"
|
||||||
cp -r "${f}" "$JENKINS_HOME/${rel}";
|
cp -pr "${f}" "$JENKINS_HOME/${rel}";
|
||||||
else
|
else
|
||||||
action="SKIPPED"
|
action="SKIPPED"
|
||||||
fi
|
fi
|
||||||
|
@ -124,4 +124,4 @@ copy_reference_file() {
|
||||||
echo "$action $rel : $reason" >> "$COPY_REFERENCE_FILE_LOG"
|
echo "$action $rel : $reason" >> "$COPY_REFERENCE_FILE_LOG"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,3 +29,13 @@ SUT_IMAGE=$(sut_image)
|
||||||
run docker run --rm $SUT_IMAGE bash -c "source /usr/local/bin/jenkins-support && versionLT 1.0-beta-1 1.0-alpha-1"
|
run docker run --rm $SUT_IMAGE bash -c "source /usr/local/bin/jenkins-support && versionLT 1.0-beta-1 1.0-alpha-1"
|
||||||
assert_failure
|
assert_failure
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "permissions are propagated from override file" {
|
||||||
|
run docker_build_child $SUT_IMAGE-functions $BATS_TEST_DIRNAME/functions
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# replace DOS line endings \r\n
|
||||||
|
run bash -c "docker run -v $BATS_TEST_DIRNAME/functions:/var/jenkins_home --rm $SUT_IMAGE-functions stat -c '%a' /var/jenkins_home/.ssh/config"
|
||||||
|
assert_success
|
||||||
|
assert_line '600'
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
FROM bats-jenkins
|
||||||
|
|
||||||
|
RUN mkdir -p /usr/share/jenkins/ref/.ssh && touch /usr/share/jenkins/ref/.ssh/config.override
|
||||||
|
RUN chmod 600 /usr/share/jenkins/ref/.ssh/config.override
|
Loading…
Reference in New Issue