Cer*_*rin 3 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
Run Code Online (Sandbox Code Playgroud)
我已经用 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
Run Code Online (Sandbox Code Playgroud)
但这失败了:
/bin/bash: line 82: add-apt-repository: command not found
Run Code Online (Sandbox Code Playgroud)
我只能假设即使我运行的是 Ubuntu 映像,Gitlab 也会限制可用的命令。在 Gitlab-CI 中安装 Python 的等效方法是什么?
@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
Run Code Online (Sandbox Code Playgroud)
您应该使用包含您需要的所有内容的基本图像。手动安装一些东西原则上应该可以工作,但会不必要地花费你 GitLab CI 管道分钟。
对于 python 3.7,您可以执行以下操作:
image: python:3.7-alpine3.9
Run Code Online (Sandbox Code Playgroud)
检查 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
Run Code Online (Sandbox Code Playgroud)
如果你绝对需要自己安装东西,因为没有合适的镜像,我仍然建议你创建一个包含你需要的一切的镜像,将它上传到 DockerHub 或你自己的 GitLab 容器注册表,然后在你的 CI 管道中使用它。
| 归档时间: |
|
| 查看次数: |
5325 次 |
| 最近记录: |