Проверьте миграцию алембиков при сборке конвейера. - PullRequest
1 голос
/ 11 апреля 2019

Я настроил конвейер сборки на Azure для выполнения pytests и тому подобное. Кроме того, я также хотел бы проверить, не пропущены ли какие-либо миграции.

Выполнение команды alembic с --autogenerate создаст новый файл миграции, если его еще нет.

При выполнении команды ревизии отдельно

 alembic revision --autogenerate

вывод выглядит примерно так (1)

INFO  [alembic.runtime.migration] Will assume transactional DDL.
INFO  [alembic.ddl.postgresql] Detected sequence ...
INFO  [alembic.ddl.postgresql] Detected sequence ...
INFO  [alembic.ddl.postgresql] Detected sequence ...
INFO  [alembic.autogenerate.compare] Detected added column ...
  Generating /.../alembic/versions/dc3dae7487df_.py ... done

Я пробовал это со следующей проверкой

 [[ $(alembic revision --autogenerate | grep "^Generating.*done$") ]] && echo "test"

Однако grep, похоже, не работает с выходом alembic, так как я никогда не получаю echo test, даже если генерируется новый файл миграции.

Выполнение команды

alembic revision --autogenerate | grep 'Generating.*done' | cat -v

производит вывод как в (1).

Изменение регулярного выражения также не дает ожидаемого результата

[[ $(alembic revision --autogenerate | grep "^[[:blank:]]*Generating.*done\r$") ]] && echo "test"

1 Ответ

1 голос
/ 11 апреля 2019

Учитывая наше обсуждение, в котором мы обнаружили, что выходные данные alembic собираются в stderr вместо stdout, это будет делать то, что я думаю, что вы хотите:

[[ $(alembic revision --autogenerate 2>&1 | grep '^[[:blank:]]*Generating.*done[[:blank:]]*$') ]] && echo "test"

Если это все еще не то, что вы хотите, отредактируйте свой вопросеще раз для уточнения.

...