如何在 Gitlab-CI 上安装 Python

Posted

技术标签:

【中文标题】如何在 Gitlab-CI 上安装 Python【英文标题】:How to install Python on Gitlab-CI 【发布时间】:2019-09-28 18:19:52 【问题描述】:

如何在 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 的等效方法是什么?

【问题讨论】:

只是把它扔出去,万一它不是。您确定您的系统上安装了软件包 add-apt-repository 吗? 如果该命令在系统上不存在您将无法运行它,您需要手动编辑您的 apt 源列表并添加以下两行 deb http://ppa.launchpad.net/deadsnakes/ppa/ubuntu YOUR_UBUNTU_VERSION_HERE main @ 987654325@ 从快速搜索看来 add-apt-repository 需要software-properties-common 包。如果已经满意,您应该更新您的问题 【参考方案1】:

您应该使用包含您需要的所有内容的基本图像。原则上手动安装应该可行,但会不必要地花费您 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 管道。

【讨论】:

【参考方案2】:

@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

【讨论】:

以上是关于如何在 Gitlab-CI 上安装 Python的主要内容,如果未能解决你的问题,请参考以下文章

在 gitlab-ci 中运行声纳扫描仪

Gitlab Flask 页面:使用 .gitlab-ci.yml 文件为 Frozen Flask Application 安装 python GDAL 包时出现问题

gitlab+gitlab-ci+docker自动化部署

dotnet 使用 gitlab-ci 发布傻瓜

在项目上运行Gitlab-CI以获取两个不同的Docker镜像

无法在 Windows 服务器上使用 docker 为 gitlab-ci 运行构建