-1

我开发了一个使用包的 python 项目owlready2。对于它的一些功能,owlready2 显式地java -jar ...通过-package 进行调用subprocess

在我的本地机器上,这工作正常。现在我想用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 在测试机上可用?

4

2 回答 2

1

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

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

于 2020-12-18T14:44:10.560 回答
0

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

于 2020-12-18T16:19:48.370 回答