我正在尝试在gitlab-ci管道中使用Karate Netty jar。我正在提取一个包含jar的图像,作为管道中的步骤。我能够对不安全的服务执行测试。 像这样:
karate-test:
stage: acceptance-test
image:
name: registry.gitlab.opr.business.org/karate-universe:0.0.3
entrypoint: [ "" ]
script:
- java -jar /karate.jar -e dev src/test/karate/acceptance-test.feature -o /target/karate
environment:
name: Test
artifacts:
paths:
- /target/karate
现在,我正在尝试将凭据传递到用于安全服务的空手道功能中,但无法从jar界面中找到功能。
我试图像这样传递凭据:
- java -jar /karate.jar -e dev src/test/karate/acceptance-test.feature -o /target/karate -Duser.password ${REQUEST_PASSWORD} -Duser.id ${REQUEST_USER}
REQUEST_PASSWORD和REQUEST_USER是gitlab-ci中可用的gitlab变量。
运行管道时,我得到:
Unmatched arguments [-Duser.password, -Duser.id]
空手道Netty是否具有像常规空手道一样能够传递用于空手道配置的变量的功能?我无法在karate-config文件本身中保留秘密。
答案 0 :(得分:1)
确保-Dfoo=bar
部分在-jar
选项之前 ,因为此后的所有内容都传递给Karate,而不是JVM。
java -Dfoo=bar -Dbaz=ban -jar /karate.jar
请注意,您还可以获得environment variables easily:
java.lang.System.getenv('PATH')
通常人们将值作为-D
JVM选项传递。如果您对独立JAR有一些高级需求,请参见:https://stackoverflow.com/a/56458094/143475