【发布时间】:2021-12-13 09:51:52
【问题描述】:
我有一个像python -m robot --include staging_lp_items 这样的机器人命令,它可以在我的系统中完美运行。
当尝试在服务器机器上使用 GitLab 运行器(作为阶段脚本)运行时,会显示此错误:
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)
我还要确保安装机器人,在主脚本之前返回pip list,并在服务器环境中安装robot以及requirements.txt文件中的其他要求。
这是系统配置:
$ 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
有 3 个阶段, build 和 build_branch 工作正常。最后一个是我遇到问题的主要阶段。这个阶段将运行(评估)run-test.sh,它有一个我之前提到的简单 python-robotframework 命令。
Python 版本:3.9
Dockerfile
FROM python:3.9
ARG CI_COMMIT_REF_NAME=master
COPY . .
RUN pip install [Repository]
RUN pip install -r requirements.txt
【问题讨论】:
-
您可能想在系统上添加 .yml 文件和 python 的版本,并简要说明您要尝试做什么。
-
is installed on the server environment是同一个版本吗?你在使用 shell 执行器吗?它是否安装在 giltab-runner 正在运行的环境中?等等。 -
@Dev 在问题上添加了
gitlab-ci.yml -
@KamilCuk 是的,它们是一样的,版本。你可以看到 yaml 文件,我准确地解释了我正在尝试做的事情
-
image: $GIT_IMAGE:$CI_COMMIT_REF_NAME它们在该 docker 映像中的版本是否相同?你使用的是什么 gitlab-runner 执行器?如果你在本地构建你的 docker 镜像并在那里运行你的脚本,你会得到同样的错误吗?请发布 Dockerfile 内容 - 请发布所有重现问题所需的文件,即。一个minimal reproducible example。如果您从 gitlab 容器注册表下载 docker 映像并在其中手动运行脚本,您会得到相同的错误吗?等等……
标签: python linux robotframework gitlab-ci gitlab-ci-runner