gpt4 book ai didi

amazon-web-services - 如何从代码构建中并行部署多个 shell 脚本?

转载 作者:行者123 更新时间:2023-12-05 07:10:20 26 4
gpt4 key购买 nike

所以目前我有一个代码构建,当我推送到我的存储库时由代码管道触发。

这些文件有一个 .sh 文件、一个 buildspec.yaml 文件和一个包含 1 到 n 个文件夹的文件夹,每个文件夹都有自己的 .sh 文件,然后将在文件夹内部署 cloudformation 资源。

deploy.sh
buildspec.yaml
Folder
|
|-- Directory1
| -- deploy.sh
| -- template.yaml
|
|-- Directory2
| -- deploy.sh
| -- template.yaml
|
|-- Directory3
| -- deploy.sh
| -- template.yaml

目前,第一个 .sh 文件只是一个 for 循环,它将 cd 到每个目录并按顺序运行 .sh 脚本。

我试图使这个过程并行而不是顺序进行。由于可能有未知数量的子文件夹,这可能是一个漫长的过程,我不希望它等待以前的资源。

有人在这方面有建议/经验吗?我做了一些搜索,但在我的测试中没有发现任何结论。

编辑:运行 for 循环的主 bu​​ild.sh 文件

#!/bin/bash
set -e

PROFILE='new-profile'
aws configure --profile $PROFILE set credential_source EcsContainer
REGION=$AWS_REGION

for directory in *; do
if [ -d ${directory} ]; then
# Will not run if no directories are available
chmod +x $directory/deploy.sh
$directory/deploy.sh -p new-profile &
# cd $directory
# echo $directory
# echo "---------------------------------------------------------------------------------"
# echo "Start deploying $directory resources..."
# echo "---------------------------------------------------------------------------------"
# chmod +x ./deploy.sh
# ./deploy.sh -p new-profile &
# cd ../
# echo "---------------------------------------------------------------------------------"
# echo "End deploying $directory resources..."
# echo "---------------------------------------------------------------------------------"
fi
done
wait
echo "finished deployment"

最佳答案

在你的主脚本中,只需循环所有的 sub-deploy.sh 并在后台运行它们,将 & 添加到字符串的末尾:

$directory/deploy.sh &

在主脚本的末尾写

wait
echo "all sub-deploy processes are finished"

关于amazon-web-services - 如何从代码构建中并行部署多个 shell 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61258533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com