[英]gradle shell script dockerfile
在 dockerfile 中获取退出代码时遇到问题
RUN bash -c " \
if [ $FLAVOR = E2ETEST ] ; then \
./gradlew clean :app:testDevDebugUnitTest --tests abcTest;\
./gradlew clean :app:testDevDebugUnitTest --tests cdeTest -PtestType=\"e2e\" executeE2ETests; \
./gradlew clean :app:testDevDebugUnitTest --tests defTest ; \
味道来自 yaml 文件我怎么能得到 3 gradle 命令的退出代码
在bash
您可以通过$?
. 例如:
bash -c "exit 12"; echo $?
将打印 12。
在您的情况下,您可以将退出代码保存到变量中,但是,由于 Dockerfile 的特殊性,在获取它们时可能会出现一些问题(您无法将它们导出到环境变量以在下一次RUN
使用)。 根据您想如何使用它,例如,您可以将其写入文本文件,或在该脚本中执行某些操作:
RUN bash -c " \
if [ \"$FLAVOR\" = E2ETEST ] ; then \
./gradlew clean :app:testDevDebugUnitTest --tests abcTest; EX1=\"\$?\"; \
./gradlew clean :app:testDevDebugUnitTest --tests cdeTest -PtestType=\"e2e\" executeE2ETests; EX2=\"\$?\"; \
./gradlew clean :app:testDevDebugUnitTest --tests defTest; EX3=\"\$?\"; \
echo \$EX1 \$EX2 \$EX3" > /tmp/exit_codes; \
fi"
此外,最好将 $FLAVOR 放在括号中,因为如果 $FLAVOR 为空,它会产生错误。 $
被转义,因为 docker 在解析过程中扩展了表达式。
如果您只需要检查命令是否成功,只需替换;
with &&
(如果任何命令以非零退出代码退出,则以下RUN
将失败):
RUN bash -c " \
if [ \"$FLAVOR\" = E2ETEST ] ; then \
./gradlew clean :app:testDevDebugUnitTest --tests abcTest && \
./gradlew clean :app:testDevDebugUnitTest --tests cdeTest -PtestType=\"e2e\" executeE2ETests && \
./gradlew clean :app:testDevDebugUnitTest --tests defTest; \
fi"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.