GitLab: How to reuse the applications installed in before_script stage into the next stages (Eg, test) without reinstalling

Viewed 62

I have a testing project in GitLab which uses Python, Robot Framework, Chrome and Selenium. I am using the following gitlab-ci.yml:

image: python:3.9

variables:
  PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"

cache:
  paths:
    - .cache/pip
    - venv/

stages:
  - test_API1
  - test_API2

before_script:
  - python -V  # Print out python version for debugging
  - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
  - echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | tee /etc/apt/sources.list.d/google-chrome.list
  - apt update -y
  - apt install -y google-chrome-stable
  - pip install virtualenv
  - virtualenv venv
  - source venv/bin/activate
  - pip install -r requirements.txt

API1:
  stage: test_API1
  when: manual
  script:
    - python3 -m robot.run -d Results1 Test/test_API1.robot  

API2:
  stage: test_API2
  script:
    - python3 -m robot.run -d Results2 Test/test_API2.robot

I specifically want the two Test Stages to be separate and in doing so, i have to go through the before_script stage two times, which slows down the overall pipeline.

Is there a better and faster way to have Python, Robot Framework, Chrome and Selenium installed in one stage and then reused in test stages? Can someone suggest any docker images which are already present to work for this scenario?

0 Answers
Related