首页 > 解决方案 > 将 cucumber.options (tags) 作为 ENV 传输到 Docker 容器中

问题描述

今天是个好日子。

我有一个简单的基于 java 的黄瓜应用程序,它在 Docker 中运行。我计划通过对 Cucumber 标签使用 ENV 来指定要运行的场景。

我的 Dockerfile 能够运行指定的标签:

FROM maven:3.6.1-jdk-11
COPY target/cucumber-app.jar ./

CMD java -jar -Dcucumber.options='--tags @default' cucumber-app.jar

在这种情况下,在 docker run 命令期间一切正常。

我计划为未指定的标签设置默认场景,并能够通过 ENV 设置特殊场景:

    FROM maven:3.6.1-jdk-11
    COPY target/cucumber-app.jar ./
    ENV TAG '--tags @default'
    
    CMD java -jar -Dcucumber.options=$TAG cucumber-app.jar

不幸的是,在这种情况下,在运行 docker 容器后我得到了:

Error: could not open `default'

可能您有任何想法为什么使用 ENV 崩溃可能性来指定 cucumber.options?

标签: javadockercucumbercucumber-jvmcucumber-java

解决方案


如果您有 Cucumber 的最新版本,而不是尝试通过环境变量通过系统属性来压缩命令行选项,则可以立即设置环境变量。IE:

ENV CUCUMBER_FILTER_TAGS '@Cucumber and not (@Gherkin or @Zucchini)'
CMD java -jar cucumber-app.jar

https://github.com/cucumber/cucumber-jvm/tree/main/core


推荐阅读