如何使docker失败或检查版本存在

时间:2017-05-10 09:56:46

标签: bash maven docker maven-antrun-plugin

我让maven运行bash来使用Docker构建一些东西。

<plugin>
    ...
    <artifactId>maven-antrun-plugin</artifactId>
        ...
            <exec executable="${basedir}/generate.sh" failonerror="true">
                                <arg value="${thrift.version}" />
...

bash脚本运行如下:

for file in src/main/thrift/*.thrift; do
    echo "Compiling ${file}"
    docker run {...} thrift:${THRIFT_VERSION} thrift {...}
done

我的问题是,当Docker找不到我要求的版本时,它在控制台中显示错误但它没有“失败”:它只是继续构建。

 [exec] Compiling src/main/thrift/amsException.thrift
 [exec] docker: Tag 0.9.0 not found in repository docker.io/library/thrift.
 [exec] See 'docker run --help'.
 [exec] Unable to find image 'thrift:0.9.0' locally

因此maven说

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

如何在无法找到版本时使Docker抛出错误?我的最终目标是Maven在发生这种情况时无法进行清理安装。

干杯!

1 个答案:

答案 0 :(得分:1)

您可以查看docker run退出代码。如果它不是0,则中止你的脚本。

for file in src/main/thrift/*.thrift; do
    echo "Compiling ${file}"
    docker run {...} thrift:${THRIFT_VERSION} thrift {...}
    if [ $? != 0 ]; then
        exit -1
    fi
done