我有一个问题,我正在努力。
我正在写一个.sh
脚本,它将在我们的CI管道中执行,以测试一些安装脚本是否仍然工作。
我特别纠结的命令是:
bash <(curl -s https://myhost/path/to/installation/angular.sh)
从Stackoverflow上的其他帖子中,我了解到有不同的方式来cURL和执行.sh
脚本。我都试过了。
在我的情况下,它总是要么…
- 执行完
ng new
命令后脚本停止 - 或者安装成功,但脚本中没有执行以下命令。
对于上下文,下面是脚本:
#!/usr/bin/env bash
set -e # exit on errors
BASE_DIR="$( cd "$(dirname "$0")" ; pwd -P )"
source $BASE_DIR/bashHelpers.sh
ANGULAR_EXAMPLE_FOLDER="angularTest"
#Run Angular Tests
bash -c "$(curl -s https://myhost/path/to/installation/angular.sh)"
#I've also tried:
#curl -s https://myhost/path/to/installation/angular.sh | bash -s -- $ANGULAR_EXAMPLE_FOLDER
# OR
#curl -s https://myhost/path/to/installation/angular.sh | bash -s -- $ANGULAR_EXAMPLE_FOLDER > yes
(
BASE_DIR="$( cd "$(dirname "$0")" ; pwd -P )"
source $BASE_DIR/bashHelpers.sh
cypress run --env configFile=setuptest --browser chrome -c video=false &&
killWebserver 4200
rm -rf $ANGULAR_EXAMPLE_FOLDER
)
我的脚本中的过程非常简单:
- cURL并执行安装脚本
- 运行已安装的项目
- 运行柏树测试
- 如果cypress成功,停止服务器
- 删除项目
- 执行下一个脚本
如果你能帮助我,我将非常感激,因为这个相关的话题对我没有任何帮助。
能够解决这个问题,并使脚本更适应参数:
#Run acutal test
(set -e && waitForWebServer $PORT $TESTURL) & (
curl -s $URL > ./setup.sh &&
printf 'n' | source ./setup.sh test)
printnf 'n' | source ./setup.sh test
行解决了bash在安装过程中被ng cli
锁住的问题。执行waitForWebServer
和run the setup script
这两个部分的子bashh方面允许并行运行这些命令。因此,节省了一些运行时间,而没有不必要的sleep
命令。