Monday, 1 November 2021

Getting error "cannot import name 'run_cli' from 'robot'" with Gitlab CI Runner

I have a robot command like python -m robot --include staging_lp_items which is run perfectly in my system.

When trying to run this with GitLab runner (as a stage script) in a server machine, this error is shown:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/local/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/usr/local/lib/python3.9/site-packages/robot/__main__.py", line 25, in <module>
    from robot import run_cli
ImportError: cannot import name 'run_cli' from 'robot' (/usr/local/lib/python3.9/site-packages/robot/__init__.py)

I also to make sure of installing robot, return the pip list before main script and robot is installed on the server environment as well as other requirements in requirements.txt file. Here is the system config:

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye

GitLab Yaml:

stages:
  - build
  - build_branch
  - test

variables:
  REGISTRY_IMAGE: ${CI_REGISTRY}/qa/${CI_PROJECT_NAME}
  GIT_IMAGE: ${CI_REGISTRY}/qa/${CI_PROJECT_NAME}


build:
  image: docker:latest
  stage: build
  before_script:
    - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
  script:
    - echo image name $REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
    - docker build -t $REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG .
    - docker push $REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
  rules:
    - when: manual


build_branch:
  image: docker:latest 
  stage: build_branch
  before_script:
    - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
  script:
    - echo project image is ${GIT_IMAGE}
    - docker build --build-arg CI_COMMIT_REF_NAME=master -t $GIT_IMAGE:$CI_COMMIT_REF_NAME .
    - docker push $GIT_IMAGE:$CI_COMMIT_REF_NAME
  rules:
    - when: manual
  allow_failure: true

run_test:
  image: $GIT_IMAGE:$CI_COMMIT_REF_NAME
  stage: test
  script:
    - cat /etc/os-release
    - chmod +x ./.deploy/run-test.sh
    - ./.deploy/run-test.sh
  rules:
    - when: manual
  allow_failure: false

There are 3 stages, build and build_branch work fine. The last one is the main stage that I have a problem with it. This stage will run (eval) the run-test.sh that has a simple python-robotframework command I mentioned before.

Python Version : 3.9

Dockerfile

FROM python:3.9
ARG CI_COMMIT_REF_NAME=master
COPY . .
RUN pip install [Repository]
RUN pip install -r requirements.txt


from Getting error "cannot import name 'run_cli' from 'robot'" with Gitlab CI Runner

No comments:

Post a Comment