Ansible Gitlab管道输出到CLI和Junit



我有一个gitlab管道,它运行一个非常基本的ansible剧本。在ci文件中,我将env变量设置为输出到Junit文件。

- export ANSIBLE_STDOUT_CALLBACK=junit
- export JUNIT_OUTPUT_DIR="results"

虽然在测试部分的运行结束时给了我一个可读性很好的报告,但这让我无法在stdout cli中查看运行中我的剧本在哪里,在atm上运行的服务器等。对于一个可能需要数小时才能运行的工作,如果能够了解它在运行中的位置,那就太好了。

有什么办法可以吃我的蛋糕吗?我是否可以让stdout、AND仍然生成Junit报告,或者它们是互斥的?我读过一些文章,说你只能有一个DEFAULT回调,措辞似乎表明这是可能的,但我的搜索还没有找到一个例子。帮我振作起来,你是我唯一的希望。

从文档中,

您只能有一个插件作为控制台的主管理器输出如果要替换默认值,则应定义CALLBACK_TYPE=子类中的stdout,然后配置stdoutansible.cfg.中的插件

换句话说:您可以使用任意数量的回调插件,但不允许其中一个插件的CALLBACK_TYPE设置为stdout,您应该在stdout_callbackansible.cfg设置(ANSIBLE_STDOUT_CALLBACK环境变量(中命名此插件,而不是在callbacks_enabled(ANSIBLE_CALLBACKS_ENABLED(中命名您正在使用的其余回调插件。

文档中没有进一步详细说明CALLBACK_TYPE是什么,或者它对每个内置回调插件的价值是什么,但在源代码中很容易发现。值得注意的是,junit插件的CALLBACK_TYPE不是stdout

最终,这意味着您可以将ANSIBLE_STDOUT_CALLBACK保留为其默认值(这将恢复stdout输出(,而使用ANSIBLE_CALLBACKS_ENABLED调用junit插件。


tl;dr:

- export ANSIBLE_CALLBACKS_ENABLED=junit
- export JUNIT_OUTPUT_DIR="results"

最新更新