mirror of
https://ops.gitlab.net/gitlab-org/gitlab-build-images.git
synced 2025-12-09 10:02:56 +01:00
153 lines
5.6 KiB
Bash
Executable file
153 lines
5.6 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -xeuo pipefail
|
|
IFS=$'\n\t'
|
|
|
|
CHROME_VERSION=${1:-99.0.4844.74-1}
|
|
|
|
# We hard code the URL rather than using $CI_API_V4_URL $CI_PROJECT_ID,
|
|
# because we would need to forward those variables
|
|
CHROME_DOWNLOAD_URL_BASE="https://gitlab.com/api/v4/projects/1075790/packages/generic/google-chrome-stable"
|
|
|
|
function build_debian() {
|
|
if [[ $(dpkg --print-architecture) == arm64 ]]; then
|
|
echo "The arm64 does not have prebuilt chrome. Using chromium instead."
|
|
apt-get update -q -y
|
|
apt-get install -y chromium chromium-driver
|
|
apt-get autoremove -yq
|
|
apt-get clean -yqq
|
|
rm -rf /var/lib/apt/lists/*
|
|
exit 0
|
|
fi
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
curl -sS -L https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
|
|
echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >/etc/apt/sources.list.d/google.list
|
|
|
|
apt-get update -q -y
|
|
|
|
# Download from our package registry if we can't find the package in the apt repository
|
|
echo "Searching for $CHROME_VERSION in apt repository"
|
|
CHECK_VERSION=$(apt-cache show google-chrome-stable | grep Version | grep "$CHROME_VERSION") || true
|
|
|
|
apt-cache policy google-chrome-stable
|
|
|
|
if [[ -z $CHECK_VERSION ]]; then
|
|
CHROME_DEB="google-chrome-stable_${CHROME_VERSION}_$(dpkg --print-architecture).deb"
|
|
CHROME_URL="${CHROME_DOWNLOAD_URL_BASE}/${CHROME_VERSION}/${CHROME_DEB}"
|
|
echo "Downloading from our Package registry: $CHROME_URL"
|
|
curl --silent --show-error --fail -O $CHROME_URL
|
|
dpkg -i ./$CHROME_DEB || true
|
|
apt-get install -f -y
|
|
rm -f $CHROME_DEB
|
|
else
|
|
echo "Installing via apt-get"
|
|
apt-get install -y google-chrome-stable=$CHROME_VERSION
|
|
fi
|
|
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install ChromeDriver
|
|
CHROME_VERSION_BASE=$(echo $CHROME_VERSION | awk -F "." '{print $1 "." $2 "." $3}')
|
|
CHROME_DRIVER_VERSION=$(curl -q https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_VERSION_BASE)
|
|
wget -q https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip
|
|
unzip chromedriver_linux64.zip -d /usr/local/bin
|
|
rm -f chromedriver_linux64.zip
|
|
|
|
apt-get autoremove -yq
|
|
apt-get clean -yqq
|
|
rm -rf /var/lib/apt/lists/*
|
|
rm -rf /etc/apt/sources.list.d/google*.list
|
|
}
|
|
|
|
function build_ubi() {
|
|
UBI_VERSION=$(lsb_release -a | awk '/Release/ { print $2 }')
|
|
UBI_MAJOR_VERSION=${UBI_VERSION%.*} # strip last component
|
|
|
|
# Dependencies are spread across epel and CentOS 8 repos. So we temporarily
|
|
# enable them.
|
|
# The awk is below to strip leading and trailing spaces in the
|
|
# repo file which can cause yum to blow up
|
|
{ awk '{$1=$1};1' | tee -a /etc/yum.repos.d/centos.repo; } <<- EOM
|
|
[centos-appstream]
|
|
name=CentOS-${UBI_MAJOR_VERSION}- AppStream
|
|
baseurl=http://vault.centos.org/centos/8/AppStream/x86_64/os/
|
|
gpgcheck=0
|
|
enabled=1
|
|
|
|
[centos-baseos]
|
|
name=CentOS-${UBI_MAJOR_VERSION}- BaseOS
|
|
baseurl=http://vault.centos.org/centos/8/BaseOS/x86_64/os
|
|
gpgcheck=0
|
|
enabled=1
|
|
EOM
|
|
yum -y install "https://dl.fedoraproject.org/pub/epel/epel-release-latest-${UBI_MAJOR_VERSION}.noarch.rpm"
|
|
|
|
if [[ ${BUILD_ARCH} == "arm64" ]]; then
|
|
echo "The arm64 does not have prebuilt chrome. Using chromium instead."
|
|
yum update -y
|
|
yum install -y chromium chromedriver
|
|
|
|
yum autoremove -y
|
|
yum clean -y all
|
|
rm -rf /etc/yum.repos.d/centos.repo
|
|
yum remove -y epel-release
|
|
|
|
exit 0
|
|
fi
|
|
|
|
{ awk '{$1=$1};1' | tee -a /etc/yum.repos.d/google-chrome.repo; } <<- EOM
|
|
[google-chrome]
|
|
name=Google Chrome
|
|
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$(arch)
|
|
enabled=1
|
|
gpgcheck=1
|
|
repo_gpgcheck=0
|
|
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
|
|
EOM
|
|
|
|
yum update -y
|
|
|
|
LATEST_VERSION_STRING=$(yum info google-chrome-stable | awk '/Version/ { print $NF}')
|
|
LATEST_RELEASE_STRING=$(yum info google-chrome-stable | awk '/Release/ { print $NF}')
|
|
LATEST_VERSION="${LATEST_VERSION_STRING}-${LATEST_RELEASE_STRING}"
|
|
|
|
# Download from our package registry if we can't find the package in the apt repository
|
|
echo "Searching for $CHROME_VERSION in apt repository"
|
|
if [[ $LATEST_VERSION != ${CHROME_VERSION} ]]; then
|
|
CHROME_RPM="google-chrome-stable-${CHROME_VERSION}.$(arch).rpm"
|
|
CHROME_URL="${CHROME_DOWNLOAD_URL_BASE}/${CHROME_VERSION}/${CHROME_RPM}"
|
|
|
|
echo "Downloading from our Package registry: $CHROME_URL"
|
|
curl --silent --show-error --fail -O $CHROME_URL
|
|
yum install -y ./${CHROME_RPM} || true
|
|
rm -f $CHROME_RPM
|
|
else
|
|
echo "Installing via apt-get"
|
|
yum install -y google-chrome-stable-$CHROME_VERSION
|
|
fi
|
|
|
|
# Install ChromeDriver
|
|
CHROME_VERSION_BASE=$(echo $CHROME_VERSION | awk -F "." '{print $1 "." $2 "." $3}')
|
|
CHROME_DRIVER_VERSION=$(curl -q https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_VERSION_BASE)
|
|
wget -q https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip
|
|
unzip chromedriver_linux64.zip -d /usr/local/bin
|
|
rm -f chromedriver_linux64.zip
|
|
|
|
yum autoremove -y
|
|
yum clean -y all
|
|
rm -rf /etc/yum.repos.d/centos.repo
|
|
rm -rf /etc/yum.repos.d/google-chrome.repo
|
|
yum remove -y epel-release
|
|
yum update -y --nobest
|
|
}
|
|
|
|
BUILD_OS=${BUILD_OS:-debian}
|
|
BUILD_ARCH=${BUILD_ARCH:-amd64}
|
|
|
|
if [[ $BUILD_OS =~ debian ]]; then
|
|
build_debian "$@"
|
|
elif [[ $BUILD_OS =~ ubi ]]; then
|
|
build_ubi "$@"
|
|
fi
|