Как запустить несколько команд в одном Github Actions Docker

Как правильно запускать несколько команд в одном action?

Например:

Я хочу запустить скрипт Python как action, Перед запуском этого скрипта мне нужно установить requirements.txt,

Я могу придумать несколько вариантов:

  • Создать Dockerfile с командой RUN pip install -r requirements.txt в этом.
  • Использовать python:3 изображение и запустить pip install -r requirements.txt в entrypoint.sh файл до запуска аргументов из args в main.workflow,
  • использовать оба pip install а также python myscript.py как args

Другой пример:

Я хочу запустить скрипт, который существует в моем хранилище, затем сравнить 2 файла (его вывод и файл, который уже существует).

Это процесс, который включает две команды, тогда как в первом примере pip install Команду можно считать командой построения, а не тестовой командой.

вопрос:

Могу ли я создать другой Docker для другой команды, которая будет содержать выходные данные предыдущего Docker?

Я ищу руководство по расположению команды в Dockerfile, в entrypoint или в args,

1 ответ

Вы можете запустить несколько команд, используя канал | на run приписывать. Проверь это:

name: My Workflow

on: [push]

jobs:
  runMultipleCommands:
    runs-on: ubuntu-latest
    steps:
     - uses: actions/checkout@v1
     - run: |
        echo "A initial message"
        pip install -r requirements.txt
        echo "Another message or command"
        python myscript.py
        bash some-shell-script-file.sh -xe
     - run: echo "One last message"

На моих тестах выполнялся скрипт оболочки вроде ./myscript.sh возвращает ``. Но работает как bash myscript.sh -xe работал как ожидалось.

Мой файл рабочего процесса | Результаты

Если вы хотите запустить внутри докера, вы можете запустить такую ​​опцию run clausule:

docker exec -it pseudoName /bin/bash -c "cd myproject; pip install -r requirements.txt;"
Другие вопросы по тегам