Как развернуть несколько сценариев оболочки параллельно из codebuild? - PullRequest
0 голосов
/ 16 апреля 2020

поэтому в настоящее время у меня есть кодовая сборка, которая запускается кодовой линией, когда я отправляю sh в свой репозиторий.

Файлы имеют файл. sh, файл buildspe c .yaml и папка, которая содержит от 1 до n папок, каждая из которых будет иметь свой собственный файл. sh, который затем будет развертывать ресурсы облачной информации внутри папки.

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

В настоящее время первый. sh файл является просто для l oop, который будет проходить в каждый каталог и последовательно запускать сценарий. sh.

Я являюсь пытаясь сделать этот процесс параллельным, а не последовательным. Поскольку может быть неизвестное количество дочерних папок, это может быть длительным процессом, и я не хочу, чтобы он ожидал на предыдущих ресурсах.

У кого-нибудь есть и совет / опыт в этой области? Я провел некоторые поиски, но не нашел ничего убедительного в своем тестировании.

РЕДАКТИРОВАТЬ: Основная сборка. sh файл, который запускает для l oop

#!/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"

1 Ответ

0 голосов
/ 16 апреля 2020

В вашем основном скрипте просто l oop всех вложенных объектов. sh и запустите их в фоновом режиме, добавив & в конец строки:

$directory/deploy.sh &

В конце вашего основного сценарий написания

wait
echo "all sub-deploy processes are finished"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...