如何在Gitlab-CI上安装Python

时间:2019-05-10 20:24:03

标签: python gitlab gitlab-ci

如何在Gitlab-CI上安装各种版本的Python?

在我以前使用Travis-CI的经验中,我只是运行常规的Ubuntu / Debian命令来安装Deadsnakes存储库,然后安装所需的任何版本,如:

sudo add-apt-repository -y ppa:fkrull/deadsnakes
sudo apt-get -yq update
sudo apt-get -yq install python2.7 python2.7-dev python3.4 python3.4-dev python3.6 python3.6-dev python3.7 python3.7-dev

我已经在Gitlab-CI上尝试过类似的配置:

image: ubuntu:latest

before_script:
  - add-apt-repository -y ppa:fkrull/deadsnakes
  - apt-get -yq update
  - apt-get -yq install python2.7 python2.7-dev python3.4 python3.4-dev python3.6 python3.6-dev python3.7 python3.7-dev
  - python -V

test:
  script:
  - ./run_my_tests.sh

但这失败了:

/bin/bash: line 82: add-apt-repository: command not found

我只能假设即使我正在运行Ubuntu映像,Gitlab也会限制可用的命令。在Gitlab-CI中安装Python的等效方法是什么?

2 个答案:

答案 0 :(得分:2)

您应该使用包含所需所有内容的基本图像。原则上可以手动安装某些东西,但是会不必要地花费您GitLab CI管道分钟的时间。

对于python 3.7,您可以执行以下操作:

image: python:3.7-alpine3.9

检查DockerHub以获取所有可用python映像的列表:https://hub.docker.com/_/python

如果您需要使用不同的python版本进行测试,建议将您的任务分成不同的GitLab CI作业,每个作业都使用不同的python基本映像:

test-python-3-7:
  image: python:3.7-alpine3.9
  script:
  - ./run_my_tests.sh

test-python-2.7:
  image: python:2.7.16-alpine3.8
  script:
  - ./run_my_tests.sh

如果您绝对需要自己安装东西,因为没有合适的映像,我仍然建议您创建一个包含所需内容的映像,将其上传到DockerHub或您自己的GitLab容器注册表,然后在您的容器中使用它CI管道。

答案 1 :(得分:0)

@Arthur Havlicek的想法正确。我以为software-properties-common是默认安装的,但没有安装。此外,我使用的PPA名称错误,现在为“ deadsnakes / ppa”。

运行中的配置文件如下:

image: ubuntu:latest

before_script:
  - apt-get -yq update
  - apt-get -yq install software-properties-common
  - add-apt-repository -y ppa:deadsnakes/ppa
  - apt-get -yq update
  - apt-get -yq install python-minimal python2.7 python2.7-dev python3.6 python3.6-dev python3.7 python3.7-dev python-pip

test:
  script:
  - ./run_my_tests.sh