我开发了一个使用包owlready2
的python项目。对于它的一些功能,owlready2通过subprocess
-包显式地进行类似java -jar ...
的调用。
在我的本地机器上,这很好用。现在我想用drone.io.设置CI
我当前的.drone.yml
如下所示:
---
kind: pipeline
name: python-3-8
steps:
- name: test
image: python:3.8
commands:
- pip install -r requirements.txt
- pip install .
- python -m unittest yamlpyowl.tests
在测试摘要中,我得到了错误:
...
File "/usr/local/lib/python3.8/subprocess.py", line 1702, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'java'
这是非常合乎逻辑的,因为我使用图像";python:3.8〃;。
问题:如何使java在测试机上可用?
您必须使用的内容由您指定的Docker映像定义。您使用的是标准的python3.8
Docker映像,因此您只能使用Python。
你需要的是找到或生成一个同时包含Python和Java工具集的Docker镜像,并将其提供给Drone可以访问的地方。这可能是在DockerHub上,你可以在上面创建一个帐户并免费使用。我不知道DockerHub上是否已经有一个包含这两个工具集的映像。我建议你去DockerHub网站上搜索这样一张图片。如果你找不到,那么你可以创建一个自己的Docker镜像,包含你想要/需要的任何东西,将其推送到DockerHub,然后在你的Drone构建文件中引用它。
根据@Steve的回答,我在repo中创建了一个自定义docker映像:carvk/java_python。
现在工作的.drone.yml
读取
---
kind: pipeline
name: python-3-8
steps:
- name: test
image: carvk/java_python:openjdk15_python38
commands:
- pip install -r requirements.txt
- pip install .
- python -m unittest yamlpyowl.tests