如何在drone.io上使用python和java?

2024-06-10 02:23:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我开发了一个python项目,它使用包owlready2。对于它的一些功能,owlready2通过subprocess-package显式地进行类似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在测试机上可用


Tags: installpip项目nameio功能机器child
2条回答

您必须使用的是由您指定的Docker映像定义的。您使用的是标准的python3.8Docker映像,因此只有Python可用

您需要的是找到或生成一个包含Python和Java工具集的Docker映像,并将其提供给Drone可以访问的地方。这可能在DockerHub上,您可以在它上创建一个帐户并免费使用。我不知道DockerHub上是否已经有包含这两个工具集的图像。我建议你去DockerHub网站搜索这样的图片。如果找不到Docker映像,则可以创建自己的Docker映像,其中包含您想要/需要的任何内容,将其推送到DockerHub,然后在无人机构建文件中引用它

按照@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

相关问题 更多 >