相关疑难解决方法(0)

使用docker-compose和CI - 如何处理退出代码和守护链接容器?

现在我们的Jenkins代理为每个Rails项目生成一个docker-compose.yml,然后运行docker-compose.docker-compose.yml有一个主"web"容器,里面有rbenv和我们所有其他Rails依赖项.它链接到包含测试Postgres DB的数据库容器.

当我们需要实际运行测试并生成退出代码时,问题就出现了.我们的CI服务器仅在测试脚本返回exit 0时才会部署,但docker-compose总是返回0,即使其中一个容器命令失败也是如此.

另一个问题是DB容器无限期运行,即使在Web容器完成运行测试之后也是如此,因此docker-compose up永远不会返回.

有没有办法在这个过程中使用docker-compose?我们需要能够运行容器,但在Web容器完成后退出并返回它的退出代码.现在,我们手动使用docker来启动数据库容器并使用--link选项运行Web容器.

docker docker-compose

76
推荐指数
6
解决办法
4万
查看次数

exec maven 插件:退出代码

我有以下插件来运行.sh脚本:

<plugin>
  <artifactId>exec-maven-plugin</artifactId>
  <groupId>org.codehaus.mojo</groupId>
  <executions>
    <execution>
      <id>deploy-bundles</id>
      <phase>install</phase>
      <goals>
        <goal>exec</goal>
      </goals>
      <configuration>
        <executable>${basedir}/deploy.sh</executable>
        <successCodes>
            <successCode>0</successCode> <-- Not working
        </successCodes>
      </configuration>
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

它将一些文件夹和文件复制到某些位置。有用。但是,为了以防万一,我希望有一个失败错误机制。set -e我的.sh脚本中已经有了命令,但我也想要一个 Maven 解决方案。我听说有一个名为的标签successCodes,我尝试合并它。但到目前为止没有运气。有人能指出正确的做法吗?

编辑:我的.sh脚本如下所示:

cp ../template/config.properties $component/conf
cp ../../runtime/group1/group1.mw/conf/log4j.xml $component/conf
# if the component is planning, create an additional folder called plans
if [[ $component == *".planning"* ]] 
then
mkdir -p $component/plans
    # copy all the plans here
    cp ../../mission.planning/plans/* $component/plans
fi  
Run Code Online (Sandbox Code Playgroud)

如果这些文件夹/文件不存在,预计会失败。因此,作为测试,我手动更改了上面的路径并期望它失败。它确实使执行过程失败并告诉我错误(因为我set …

bash maven exec-maven-plugin

4
推荐指数
1
解决办法
6662
查看次数

标签 统计

bash ×1

docker ×1

docker-compose ×1

exec-maven-plugin ×1

maven ×1