Skip to content

Instantly share code, notes, and snippets.

@adujardin
Last active November 3, 2022 10:29
Show Gist options
  • Save adujardin/5dfc42cdc81313d49f081aa53e897907 to your computer and use it in GitHub Desktop.
Save adujardin/5dfc42cdc81313d49f081aa53e897907 to your computer and use it in GitHub Desktop.
Setup gitlab runner docker
#!/usr/bin/env bash
set -e -x
SILENT=0
for arg in "$@"; do
arg_l=$(echo "$arg" | tr '[:upper:]' '[:lower:]')
if [ "$arg_l" == "silent" ]; then
SILENT=1
fi
done
asksure() {
if [ $SILENT == 1 ]; then
return 0
fi
read -r -p "$1 [Y/n] ?" response
response=${response,,} # tolower
if [[ $response =~ ^(yes|y| ) ]] || [[ -z $response ]]; then
retval=0
else
retval=1
fi
return $retval
}
if [ ]; then # disabled
curl -sSL https://get.docker.com/ | sh
else
# Setup Docker CE
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# Make sure it's working
sudo docker run hello-world
# Post installation
sudo groupadd docker
sudo usermod -aG docker $USER
fi
# Setting up Gitlab runner
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
sudo apt update
sudo apt-get install gitlab-runner
sudo gitlab-runner register
# Entering custom part for my need
sudo mkdir -p /mnt/data/ccache
sudo chmod 777 -R /mnt/data/
# Enable Qemu emulation
sudo apt-get install qemu binfmt-support qemu-user-static # Set up the qemu packages
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # This step will execute the registering scripts
docker run --rm -t arm64v8/ubuntu uname -m # Let's test the emulation
## Optional :
# nvidia driver
sudo apt-get install linux-headers-$(uname -r)
distribution=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e 's/\.//g')
wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda # cuda-drivers
# nvidia docker
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
# Config edit
echo "Check the configuration file '/etc/gitlab-runner/config.toml'"
echo 'FOR LOCAL RUNNER In [runners] add: environment = ["DOCKER_TLS_CERTDIR="]'
echo 'In [runners.docker] add: pull_policy = "if-not-present"'
echo 'In [runners.docker] modify to: privileged = true'
sleep 5
sudo nano /etc/gitlab-runner/config.toml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment