Как запустить несколько команд в одном 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;"