#!/bin/bash if [[ $# -lt 2 ]]; then echo "usage $0: " 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"