Я пишу сценарии развертывания некоторых приложений и развертывания процессов продвижения, используя bash (shell). Эти сценарии пишутся как отказоустойчивые на случай, если наша CI-платформа снова выйдет из строя (как это было недавно).
В этом процессе у каждого приложения есть текстовый файл с парами ключ-значение, где ключ - это имя области развертывания (dev, qa, prod)… и значение - это хэш, связанный с развертываемым файлом (-ами).
Я изо всех сил пытаюсь определить, как лучше всего подходить к распознаванию ключа, а не к получению значения из простого извлечения файла в… но извлечение файла и последующее ручное сравнение значений для каждой области развертывания кажется слишком сложным.
РЕКАП 1. У меня есть значение (sha1sum), но мне нужен ключ (и), он принадлежит 2. Определите ключ в паре ключ-значение из файла 3. Определите область наивысшего развертывания с соответствующим значением (т. Е. Несколько регионов могут иметь одно и то же значение в списке, вероятность возрастает, когда мы поднимаемся по цепочке.)
Какие-либо предложения?
РЕДАКТИРОВАТЬ 1 Вот где будет жить необходимый код:
###################################################################################################
# IS THIS HASH CURRENTLY DEPLOYED SOMEWHERE ELSE? IF SO, WHERE?
###################################################################################################
grep "${deployHash}" "${deployHashHome}/${deployAppName}/${deployAppName}.manifest"
if [[ "$?" -eq 0 ]]
then
source ${deployHashHome}/${deployAppName}/${deployAppName}.manifest
previousDeployRegion=""
# logThis is a custom logging function which formats logs exactly how we want, we have a Splunk parser for the format
logThis "${scriptLogDir}/${deployLogFile}" "The hash: ${deployHash}, has been previously deployed to ${previousDeployRegion}." "INFO"
fi
Вот как выглядит файл значения ключа:
mylocal=ca9c244aa1b40f39fd06318f2be9fbc1a82c5c5c
dev=986b747d846555f8c5e393a5cfbbd061ee9d68a7
int=53b8fa87f2241a17623ead2f94032b1d2045069e
reg=53b8fa87f2241a17623ead2f94032b1d2045069e
stage=
prod=
dr=
РЕДАКТИРОВАТЬ 2 Добавлен дополнительный пример значений sha1sum в пример файла значения ключа, чтобы показать, как одно и то же значение может существовать для нескольких ключей.