验证管道构建中的alembic迁移

问题描述 投票:1回答:1

我在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"
bash alembic build-pipeline
1个回答
1
投票

鉴于我们的讨论,我们发现alembic输出是stderr而不是stdout,这将做我认为你想要的:

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

如果仍然不是您想要的,那么再次编辑您的问题以进一步澄清。

© www.soinside.com 2019 - 2024. All rights reserved.