bash 脚本到 运行 在多个 docker-compose 环境中测试

bash script to run tests in multiple docker-compose environments

需要一些帮助来编写脚本来自动化一个相当简单的过程,即在 windows 主机上的多个 docker-compose 环境中进行 运行ning 测试。

这是我想要自动化的手动过程:

  1. 打开一个docker快速启动终端
  2. 设置 3 个相同的环境:docker-compose -p test1 up -d && docker-compose -p test2 up -d && docker-compose -p test3 up -d
  3. 再打开 2 个 docker 终端,然后在每个终端上 运行 以下之一:
    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

我一开始就卡住了。我可以打开一台 docker 机器 shell 但无法让它更改目录以执行第 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" 没有执行,导致后续命令失败。

为了概括运行这个脚本我认为需要的东西,我可能总结如下:

我打算在 windows 上编写 git-bash 的脚本,这是我的偏好,但也欢迎对 windows 批处理脚本提出建议。

好吧,最后也没那么难。相当混乱,我确信它可以改进,但它做了我想要的(最后我是 运行 2 docker 环境而不是 3,因为它在 4 核时表现更好)。如果有人对我从哪里得到这些奇怪的东西感兴趣,请问我,我会找到一些资源。请记住,此答案适用于 Windows:

#!/bin/bash
cd `dirname [=10=]`/../../

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}')"