#50 Improve rolling backups in pvc Docker image
This commit is contained in:
parent
c7068edf64
commit
f2a6bbbdce
|
|
@ -17,4 +17,4 @@ COPY bin .
|
||||||
RUN chmod +x *.sh
|
RUN chmod +x *.sh
|
||||||
USER user
|
USER user
|
||||||
|
|
||||||
CMD exec /bin/sh -c "while true; do sleep 1000; done"
|
CMD ./run.sh
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,6 @@ set -eo pipefail
|
||||||
[[ -z "${BACKUP_DIR}" ]] && echo "Required 'BACKUP_DIR' env not set" && exit 1;
|
[[ -z "${BACKUP_DIR}" ]] && echo "Required 'BACKUP_DIR' env not set" && exit 1;
|
||||||
[[ -z "${JENKINS_HOME}" ]] && echo "Required 'JENKINS_HOME' env not set" && exit 1;
|
[[ -z "${JENKINS_HOME}" ]] && echo "Required 'JENKINS_HOME' env not set" && exit 1;
|
||||||
|
|
||||||
if [[ ! -z "${BACKUP_COUNT}" ]]; then
|
|
||||||
echo "Trimming to only $((BACKUP_COUNT-1)) recent backups in preparation for new backup"
|
|
||||||
ls -1t ${BACKUP_DIR} | tail -n +${BACKUP_COUNT} | xargs -I '{}' rm -f ${BACKUP_DIR}/'{}'
|
|
||||||
fi
|
|
||||||
|
|
||||||
backup_number=$1
|
backup_number=$1
|
||||||
echo "Running backup"
|
echo "Running backup"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
[[ -z "${BACKUP_DIR}" ]] && echo "Required 'BACKUP_DIR' env not set" && exit 1;
|
||||||
|
[[ -z "${JENKINS_HOME}" ]] && echo "Required 'JENKINS_HOME' env not set" && exit 1;
|
||||||
|
|
||||||
|
while true;
|
||||||
|
do
|
||||||
|
sleep 10
|
||||||
|
if [[ ! -z "${BACKUP_COUNT}" ]]; then
|
||||||
|
echo "Trimming to only ${BACKUP_COUNT} recent backups in preparation for new backup"
|
||||||
|
ls ${BACKUP_DIR} | sort -gr | tail -n +$((BACKUP_COUNT +1)) | xargs -I '{}' rm ${BACKUP_DIR}/'{}'
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
[ "${DEBUG}" ] && set -x
|
[[ "${DEBUG}" ]] && set -x
|
||||||
|
|
||||||
# set current working directory to the directory of the script
|
# set current working directory to the directory of the script
|
||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
[[ "${DEBUG}" ]] && set -x
|
||||||
|
|
||||||
|
# set current working directory to the directory of the script
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
docker_image=$1
|
||||||
|
|
||||||
|
if ! docker inspect ${docker_image} &> /dev/null; then
|
||||||
|
echo "Image '${docker_image}' does not exists"
|
||||||
|
false
|
||||||
|
fi
|
||||||
|
|
||||||
|
JENKINS_HOME="$(pwd)/jenkins_home"
|
||||||
|
BACKUP_DIR="$(pwd)/backup"
|
||||||
|
mkdir -p ${BACKUP_DIR}
|
||||||
|
|
||||||
|
touch ${BACKUP_DIR}/1.tar.gz
|
||||||
|
touch ${BACKUP_DIR}/2.tar.gz
|
||||||
|
touch ${BACKUP_DIR}/3.tar.gz
|
||||||
|
touch ${BACKUP_DIR}/4.tar.gz
|
||||||
|
touch ${BACKUP_DIR}/5.tar.gz
|
||||||
|
touch ${BACKUP_DIR}/6.tar.gz
|
||||||
|
touch ${BACKUP_DIR}/7.tar.gz
|
||||||
|
touch ${BACKUP_DIR}/8.tar.gz
|
||||||
|
touch ${BACKUP_DIR}/9.tar.gz
|
||||||
|
touch ${BACKUP_DIR}/10.tar.gz
|
||||||
|
touch ${BACKUP_DIR}/11.tar.gz
|
||||||
|
|
||||||
|
# Create an instance of the container under testing
|
||||||
|
cid="$(docker run -e BACKUP_COUNT=2 -e JENKINS_HOME=${JENKINS_HOME} -v ${JENKINS_HOME}:${JENKINS_HOME}:ro -e BACKUP_DIR=${BACKUP_DIR} -v ${BACKUP_DIR}:${BACKUP_DIR}:rw -d ${docker_image})"
|
||||||
|
echo "Docker container ID '${cid}'"
|
||||||
|
|
||||||
|
# Remove test directory and container afterwards
|
||||||
|
trap "docker rm -vf $cid > /dev/null;rm -rf ${BACKUP_DIR}" EXIT
|
||||||
|
|
||||||
|
sleep 11
|
||||||
|
touch ${BACKUP_DIR}/12.tar.gz
|
||||||
|
sleep 11
|
||||||
|
|
||||||
|
if [[ "${DEBUG}" ]]; then
|
||||||
|
docker logs ${cid}
|
||||||
|
ls -la ${BACKUP_DIR}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# only two latest backup should exists
|
||||||
|
[[ $(ls -1 ${BACKUP_DIR} | wc -l) -eq 2 ]] || exit 1
|
||||||
|
[[ -f ${BACKUP_DIR}/11.tar.gz ]] || exit 2
|
||||||
|
[[ -f ${BACKUP_DIR}/12.tar.gz ]] || exit 3
|
||||||
|
echo PASS
|
||||||
Loading…
Reference in New Issue