Created
December 11, 2015 11:43
-
-
Save josefdolezal/af9817d50927d26f5cca to your computer and use it in GitHub Desktop.
GitLab Installation Script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| unknown_os () | |
| { | |
| echo "Unfortunately, your operating system distribution and version are not supported by this script." | |
| echo | |
| echo "You can override the OS detection by setting os= and dist= prior to running this script." | |
| echo "You can find a list of supported OSes and distributions on our website: /docs#os_distro_version" | |
| echo | |
| echo "For example, to force CentOS 6: os=el dist=6 ./script.sh" | |
| echo | |
| echo "Please email [email protected] and let us know if you run into any issues." | |
| exit 1 | |
| } | |
| curl_check () | |
| { | |
| echo "Checking for curl..." | |
| if command -v curl > /dev/null; then | |
| echo "Detected curl..." | |
| else | |
| echo "Installing curl..." | |
| yum install -d0 -e0 -y curl | |
| fi | |
| } | |
| if [[ ( -z "${os}" ) && ( -z "${dist}" ) ]]; then | |
| if [ -e /etc/os-release ]; then | |
| . /etc/os-release | |
| dist=`echo ${VERSION_ID} | awk -F '.' '{ print $1 }'` | |
| os=${ID} | |
| elif [ `which lsb_release 2>/dev/null` ]; then | |
| # get major version (e.g. '5' or '6') | |
| dist=`lsb_release -r | cut -f2 | awk -F '.' '{ print $1 }'` | |
| # get os (e.g. 'centos', 'redhatenterpriseserver', etc) | |
| os=`lsb_release -i | cut -f2 | awk '{ print tolower($1) }'` | |
| elif [ -e /etc/oracle-release ]; then | |
| dist=`cut -f5 --delimiter=' ' /etc/oracle-release | awk -F '.' '{ print $1 }'` | |
| os='ol' | |
| elif [ -e /etc/fedora-release ]; then | |
| dist=`cut -f3 --delimiter=' ' /etc/fedora-release` | |
| os='fedora' | |
| elif [ -e /etc/redhat-release ]; then | |
| os_hint=`cat /etc/redhat-release | awk '{ print tolower($1) }'` | |
| if [ "${os_hint}" = "centos" ]; then | |
| dist=`cat /etc/redhat-release | awk '{ print $3 }' | awk -F '.' '{ print $1 }'` | |
| os='centos' | |
| elif [ "${os_hint}" = "scientific" ]; then | |
| dist=`cat /etc/redhat-release | awk '{ print $4 }' | awk -F '.' '{ print $1 }'` | |
| os='scientific' | |
| else | |
| dist=`cat /etc/redhat-release | awk '{ print tolower($7) }' | cut -f1 --delimiter='.'` | |
| os='redhatenterpriseserver' | |
| fi | |
| else | |
| aws=`grep -q Amazon /etc/issue` | |
| if [ "$?" = "0" ]; then | |
| dist='6' | |
| os='aws' | |
| else | |
| unknown_os | |
| fi | |
| fi | |
| fi | |
| if [[ ( -z "${os}" ) || ( -z "${dist}" ) || ( "${os}" = "opensuse" ) ]]; then | |
| unknown_os | |
| fi | |
| echo "Detected ${os} version ${dist}... " | |
| curl_check | |
| yum_repo_config_url="https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/config_file.repo?os=${os}&dist=${dist}&source=script" | |
| echo "Found unique id: ${unique_id}" | |
| yum_repo_path=/etc/yum.repos.d/gitlab_gitlab-ce.repo | |
| echo "Downloading repository file: ${yum_repo_config_url}" | |
| curl -sSf "${yum_repo_config_url}" > $yum_repo_path | |
| curl_exit_code=$? | |
| if [ "$curl_exit_code" = "22" ]; then | |
| echo | |
| echo -n "Unable to download repo config from: " | |
| echo "${yum_repo_config_url}" | |
| echo | |
| echo "Please contact [email protected] and report this." | |
| [ -e $yum_repo_path ] && rm $yum_repo_path | |
| exit 1 | |
| elif [ "$curl_exit_code" = "35" ]; then | |
| echo | |
| echo "curl is unable to connect to packagecloud.io over TLS when running: " | |
| echo " curl ${yum_repo_config_url}" | |
| echo | |
| echo "This is usually due to one of two things:" | |
| echo | |
| echo " 1.) Missing CA root certificates (make sure the ca-certificates package is installed)" | |
| echo " 2.) An old version of libssl. Try upgrading libssl on your system to a more recent version" | |
| echo | |
| echo "Contact [email protected] with information about your system for help." | |
| [ -e $yum_repo_path ] && rm $yum_repo_path | |
| exit 1 | |
| elif [ "$curl_exit_code" -gt "0" ]; then | |
| echo | |
| echo "Unable to run: " | |
| echo " curl ${yum_repo_config_url}" | |
| echo | |
| echo "Double check your curl installation and try again." | |
| [ -e $yum_repo_path ] && rm $yum_repo_path | |
| exit 1 | |
| else | |
| echo "done." | |
| fi | |
| echo "Installing pygpgme to verify GPG signatures..." | |
| yum install -y pygpgme --disablerepo='gitlab_gitlab-ce' | |
| pypgpme_check=`rpm -qa | grep -qw pygpgme` | |
| if [ "$?" != "0" ]; then | |
| echo | |
| echo "WARNING: " | |
| echo "The pygpgme package could not be installed. This means GPG verification is not possible for any RPM installed on your system. " | |
| echo "To fix this, add a repository with pygpgme. Usualy, the EPEL repository for your system will have this. " | |
| echo "More information: https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F" | |
| echo | |
| # set the repo_gpgcheck option to 0 | |
| sed -i'' 's/repo_gpgcheck=1/repo_gpgcheck=0/' /etc/yum.repos.d/gitlab_gitlab-ce.repo | |
| fi | |
| echo "Installing yum-utils..." | |
| yum install -y yum-utils --disablerepo='gitlab_gitlab-ce' | |
| yum_utils_check=`rpm -qa | grep -qw yum-utils` | |
| if [ "$?" != "0" ]; then | |
| echo | |
| echo "WARNING: " | |
| echo "The yum-utils package could not be installed. This means you may not be able to install source RPMs or use other yum features." | |
| echo | |
| fi | |
| echo "Generating yum cache for gitlab_gitlab-ce..." | |
| yum -q makecache -y --disablerepo='*' --enablerepo='gitlab_gitlab-ce' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment