2017-05-24 107 views
1

需要一些帮助来编写脚本来自动完成在Windows主机上的多个docker-compose环境中运行测试的相当简单的过程。bash脚本在多个docker-compose环境中运行测试

这是手动过程,我想自动化:

  1. 打开搬运工快速启动终端
  2. 设置3个相同的环境中:docker-compose -p test1 up -d && docker-compose -p test2 up -d && docker-compose -p test3 up -d
  3. 打开2个搬运工终端,然后运行的一个在以下各个:
    1. docker-compose-run -p test1 app ./node_modules/gulp/bin/gulp.js cuc-reports
    2. docker-compose-run -p test2 app ./node_modules/gulp/bin/gulp.js cuc-not-reports1
    3. docker-compose-run -p test3 app ./node_modules/gulp/bin/gulp.js cuc-not-reports2
  4. 当所有测试完成后,推倒:docker-compose -p test1 down && docker-compose -p test2 down && docker-compose -p test3 down

我被堵在开始的时候漂亮多了。我可以打开泊坞窗机外壳,但不能让它改变目录,以执行步骤2.我试过如下:

#!/bin/bash 
src=$PWD/../../ 
cd "C:\Program Files\Docker Toolbox" 
"C:\Program Files\Git\bin\bash.exe" --login -i "C:\Program Files\Docker Toolbox\start.sh" cd $src && docker-compose -p test1 up -d && docker-compose -p test2 up -d && docker-compose -p test3 up -d 

然而,“CD $ SRC”不执行这将导致后续命令失败。

试图概括我想我需要为了运行此脚本,我会总结如下的事情:我怎样才能传递命令进行一次泊坞窗壳载荷执行(如

  • “CD ...“)?
  • 如何从根shell打开多个独立(docker)shell并等待它们完成执行其命令?

我打算在Windows上编写git-bash的脚本,这是我的首选项,但也欢迎windows批处理脚本的建议。

回答

0

嗯,最后并没有那么难。相当混乱,我相信它可以改进,但它做我想要的(最终,我运行2个码头环境不是3,因为它使用4个核心性能更好)。如果有人对我所有这些奇怪的东西感兴趣,只要问一下,我会找到一些资源。请记住,此答案适用于Windows:

#!/bin/bash 
cd `dirname $0`/../../ 

start bash -c 'docker-compose -p test1 up -d; sleep 3s; docker exec -i $(docker-compose -p test1 ps ros | grep -m 1 ros | cut -d " " -f1) ./node_modules/gulp/bin/gulp.js cucumber1; docker-compose -p test1 down; bash' 
start bash -c 'docker-compose -p test2 up -d; sleep 3s; docker exec -i $(docker-compose -p test2 ps ros | grep -m 1 ros | cut -d " " -f1) ./node_modules/gulp/bin/gulp.js cucumber2; docker-compose -p test2 down; bash' 
sleep 5s 
start bash -c "docker stats $(docker ps | awk '{if(NR>1) print $NF}')"