1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
#!/bin/bash
if [[ $# -lt 2 ]]; then
echo "usage $0: <image> <file> <upgrade>"
exit 1
fi
set -xe
set -o pipefail
IMAGE="$1"
INSTALL_FILE="$2"
UPGRADE="$3"
if [[ ! -f "$INSTALL_FILE" ]]; then
echo "$INSTALL_FILE: not found"
exit 1
fi
ID=gitlab_runner
docker rm -f -v $ID || :
docker run -d --name $ID --privileged "$IMAGE" /sbin/init
# trap "docker rm -f -v $ID" EXIT
cat "$INSTALL_FILE" | docker exec -i $ID bash -c "cat > /$(basename $INSTALL_FILE)"
case $IMAGE in
debian:*|ubuntu-upstart:*)
docker exec $ID apt-get update -y
docker exec $ID apt-get install -y curl procps
if [[ -n "$UPGRADE" ]]; then
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | docker exec -i $ID bash
docker exec $ID apt-get install -y gitlab-runner
fi
if ! docker exec $ID dpkg -i "/$(basename $INSTALL_FILE)"
then
docker exec $ID apt-get install -f -y
docker exec $ID dpkg -i "/$(basename $INSTALL_FILE)"
fi
;;
centos:*)
docker exec $ID yum install -y curl sysvinit-tools
if [[ -n "$UPGRADE" ]]; then
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | docker exec -i $ID bash
docker exec $ID yum install -y gitlab-runner
fi
docker exec $ID yum localinstall -y "/$(basename $INSTALL_FILE)"
;;
*)
echo "ERROR: unsupported $IMAGE."
esac
if [[ -n "$UPGRADE" ]]; then
USER="gitlab_ci_multi_runner"
else
USER="gitlab-runner"
fi
cat $(dirname $0)/test_script.sh | docker exec -i $ID bash -s "$USER"
|