Как использовать Python и Java на Drone.io?

Я разрабатываю проект Python, в котором используется пакет owlready2. Для некоторых своих функций owlready2 явно делает вызовы типа java -jar ... через subprocess-пакет.

На моей локальной машине это работает нормально. Теперь я хочу настроить CI с помощью Drone.io.

Мой текущий .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 доступной на тестовой машине?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
412
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

То, с чем вам придется работать, определяется образом Docker, который вы указываете. Вы используете стандартный образ python3.8 Docker, поэтому вам доступен только Python.

Что вам нужно, так это найти или создать образ Docker, который содержит наборы инструментов Python и Java, и сделать его доступным где-нибудь, чтобы Drone мог получить к нему доступ. Скорее всего, это будет на DockerHub, где вы можете создать учетную запись и использовать ее бесплатно. Я не знаю, есть ли уже на DockerHub образ, включающий оба набора инструментов. Я бы посоветовал вам зайти на веб-сайт DockerHub и найти такой образ. Если вы не можете его найти, вы можете создать собственный образ Docker, содержащий все, что вы хотите/нужно, отправить его в DockerHub, а затем сослаться на него в файле сборки Drone.

Следуя ответу @Steve, я создал собственный образ докера в репозитории: 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

Другие вопросы по теме