Commit bc486863 authored by Andrejs Cunskis's avatar Andrejs Cunskis Committed by Mark Lapierre

Improve caching of webdrivers during qa-image build

parent 2112a0a3
...@@ -123,6 +123,7 @@ Naming/FileName: ...@@ -123,6 +123,7 @@ Naming/FileName:
- 'ee/lib/generators/**/*' - 'ee/lib/generators/**/*'
- 'qa/qa/scenario/test/integration/ldap_no_tls.rb' - 'qa/qa/scenario/test/integration/ldap_no_tls.rb'
- 'qa/qa/scenario/test/integration/ldap_tls.rb' - 'qa/qa/scenario/test/integration/ldap_tls.rb'
- 'qa/tasks/*'
IgnoreExecutableScripts: true IgnoreExecutableScripts: true
AllowedAcronyms: AllowedAcronyms:
......
...@@ -4,11 +4,6 @@ LABEL maintainer="GitLab Quality Department <quality@gitlab.com>" ...@@ -4,11 +4,6 @@ LABEL maintainer="GitLab Quality Department <quality@gitlab.com>"
ENV DEBIAN_FRONTEND="noninteractive" ENV DEBIAN_FRONTEND="noninteractive"
ENV DOCKER_VERSION="17.09.0-ce" ENV DOCKER_VERSION="17.09.0-ce"
# https://s3.amazonaws.com/gitlab-google-chrome-stable
ENV CHROME_VERSION="91.0.4472.77-1"
ENV CHROME_DEB="google-chrome-stable_${CHROME_VERSION}_amd64.deb"
ENV CHROME_URL="https://s3.amazonaws.com/gitlab-google-chrome-stable/${CHROME_DEB}"
## ##
# Update APT sources and install dependencies # Update APT sources and install dependencies
# #
...@@ -22,15 +17,6 @@ RUN wget -q "https://download.docker.com/linux/static/stable/x86_64/docker-${DOC ...@@ -22,15 +17,6 @@ RUN wget -q "https://download.docker.com/linux/static/stable/x86_64/docker-${DOC
tar -zxf "docker-${DOCKER_VERSION}.tgz" && mv docker/docker /usr/local/bin/docker && \ tar -zxf "docker-${DOCKER_VERSION}.tgz" && mv docker/docker /usr/local/bin/docker && \
rm "docker-${DOCKER_VERSION}.tgz" rm "docker-${DOCKER_VERSION}.tgz"
##
# Install Google Chrome version with headless support
# Download from our local S3 bucket, populated by https://gitlab.com/gitlab-org/gitlab-build-images/-/blob/master/scripts/cache-google-chrome
#
RUN curl --silent --show-error --fail -O "${CHROME_URL}" && \
dpkg -i "./${CHROME_DEB}" || true && \
apt-get install -f -y && \
rm -f "./${CHROME_DEB}"
## ##
# Install client certificate - Bug in Chrome Headless: https://gitlab.com/gitlab-org/gitlab/-/issues/331492 # Install client certificate - Bug in Chrome Headless: https://gitlab.com/gitlab-org/gitlab/-/issues/331492
# #
...@@ -60,9 +46,32 @@ RUN export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" && \ ...@@ -60,9 +46,32 @@ RUN export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" && \
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \
apt-get update -y && apt-get install google-cloud-sdk kubectl -y apt-get update -y && apt-get install google-cloud-sdk kubectl -y
##
# Install Google Chrome version with headless support
# Download from our local S3 bucket, populated by https://gitlab.com/gitlab-org/gitlab-build-images/-/blob/master/scripts/cache-google-chrome
#
# https://s3.amazonaws.com/gitlab-google-chrome-stable
ENV CHROME_VERSION="91.0.4472.77-1"
ENV CHROME_DEB="google-chrome-stable_${CHROME_VERSION}_amd64.deb"
ENV CHROME_URL="https://s3.amazonaws.com/gitlab-google-chrome-stable/${CHROME_DEB}"
RUN curl --silent --show-error --fail -O "${CHROME_URL}" && \
dpkg -i "./${CHROME_DEB}" || true && \
apt-get install -f -y && \
rm -f "./${CHROME_DEB}"
WORKDIR /home/gitlab/qa WORKDIR /home/gitlab/qa
# Install qa dependencies or fetch from cache if unchanged
COPY ./qa/Gemfile* /home/gitlab/qa/ COPY ./qa/Gemfile* /home/gitlab/qa/
RUN bundle install --jobs=$(nproc) --retry=3 --without=development --quiet
##
# Fetch chromedriver based on version of chrome
# Copy rakefile first so that webdriver is not reinstalled on every code change
# https://github.com/titusfortner/webdrivers
COPY ./qa/tasks/webdrivers.rake /home/gitlab/qa/tasks/
RUN bundle exec rake -f tasks/webdrivers.rake webdrivers:chromedriver:update
COPY ./config/initializers/0_inject_enterprise_edition_module.rb /home/gitlab/config/initializers/ COPY ./config/initializers/0_inject_enterprise_edition_module.rb /home/gitlab/config/initializers/
# Copy VERSION to ensure the COPY succeeds to copy at least one file since ee/app/models/license.rb isn't present in FOSS # Copy VERSION to ensure the COPY succeeds to copy at least one file since ee/app/models/license.rb isn't present in FOSS
# The [b] part makes ./ee/app/models/license.r[b] a pattern that is allowed to return no files (which is the case in FOSS) # The [b] part makes ./ee/app/models/license.r[b] a pattern that is allowed to return no files (which is the case in FOSS)
...@@ -71,12 +80,6 @@ COPY ./lib/gitlab.rb /home/gitlab/lib/ ...@@ -71,12 +80,6 @@ COPY ./lib/gitlab.rb /home/gitlab/lib/
COPY ./lib/gitlab/utils.rb /home/gitlab/lib/gitlab/ COPY ./lib/gitlab/utils.rb /home/gitlab/lib/gitlab/
COPY ./INSTALLATION_TYPE ./VERSION /home/gitlab/ COPY ./INSTALLATION_TYPE ./VERSION /home/gitlab/
RUN bundle install --jobs=$(nproc) --retry=3 --without=development --quiet
COPY ./qa /home/gitlab/qa COPY ./qa /home/gitlab/qa
# Fetch chromedriver version based on version of chrome
# https://github.com/titusfortner/webdrivers
RUN bundle exec rake webdrivers:chromedriver:update
ENTRYPOINT ["bin/test"] ENTRYPOINT ["bin/test"]
# frozen_string_literal: true # frozen_string_literal: true
# rubocop:disable Rails/RakeEnvironment # rubocop:disable Rails/RakeEnvironment
require 'webdrivers' load 'tasks/webdrivers.rake'
load 'webdrivers/Rakefile'
require_relative 'qa/tools/revoke_all_personal_access_tokens' require_relative 'qa/tools/revoke_all_personal_access_tokens'
require_relative 'qa/tools/delete_subgroups' require_relative 'qa/tools/delete_subgroups'
......
# frozen_string_literal: true
require 'webdrivers'
load 'webdrivers/Rakefile'
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment