fix: use flock directly with file instead of file descriptor for zsh compatibility
This commit is contained in:
73
.github/workflows/deploy.yml
vendored
73
.github/workflows/deploy.yml
vendored
@@ -148,23 +148,17 @@ jobs:
|
||||
local history_size="${DEPLOY_HISTORY_SIZE:-10}"
|
||||
|
||||
if command -v flock > /dev/null 2>&1; then
|
||||
# Используем flock с файлом напрямую (работает в zsh и bash)
|
||||
# Zsh поддерживает только дескрипторы 0-9, поэтому используем 9
|
||||
(
|
||||
if flock -x 9 "$lock_file"; then
|
||||
# Используем flock напрямую с файлом (работает в zsh и bash)
|
||||
flock -x "$lock_file" sh -c "
|
||||
# Записываем новую запись
|
||||
echo "$entry" >> "$history_file"
|
||||
echo \"$entry\" >> \"$history_file\"
|
||||
|
||||
# Обрезаем файл атомарно
|
||||
tail -n "$history_size" "$history_file" > "${history_file}.tmp"
|
||||
mv "${history_file}.tmp" "$history_file"
|
||||
tail -n $history_size \"$history_file\" > \"${history_file}.tmp\"
|
||||
mv \"${history_file}.tmp\" \"$history_file\"
|
||||
|
||||
echo "✅ History updated safely"
|
||||
else
|
||||
echo "❌ Failed to acquire lock on $history_file"
|
||||
exit 1
|
||||
fi
|
||||
) 9>"$lock_file"
|
||||
echo \"✅ History updated safely\"
|
||||
"
|
||||
else
|
||||
# Fallback: простая запись без блокировки
|
||||
echo "$entry" >> "$history_file"
|
||||
@@ -512,25 +506,23 @@ jobs:
|
||||
local lock_file="${history_file}.lock"
|
||||
|
||||
if command -v flock > /dev/null 2>&1; then
|
||||
# Используем flock с файлом напрямую (работает в zsh и bash)
|
||||
(
|
||||
if flock -x 9 "$lock_file"; then
|
||||
if [ -f "$history_file" ]; then
|
||||
# Используем flock напрямую с файлом (работает в zsh и bash)
|
||||
flock -x "$lock_file" sh -c "
|
||||
if [ -f \"$history_file\" ]; then
|
||||
# Заменяем последнюю строку со статусом deploying на финальный статус
|
||||
sed -i '$s/|deploying$/|'"$new_status"'/' "$history_file"
|
||||
echo "✅ Deploy history updated with status: $new_status (with flock)"
|
||||
sed -i '\$s/|deploying\$/|$new_status/' \"$history_file\"
|
||||
echo \"✅ Deploy history updated with status: $new_status (with flock)\"
|
||||
else
|
||||
echo "⚠️ History file not found, skipping update"
|
||||
echo \"⚠️ History file not found, skipping update\"
|
||||
fi
|
||||
else
|
||||
" || {
|
||||
echo "⚠️ Failed to acquire lock, using fallback method"
|
||||
# Fallback: простая запись без блокировки
|
||||
if [ -f "$history_file" ]; then
|
||||
sed -i '$s/|deploying$/|'"$new_status"'/' "$history_file"
|
||||
echo "✅ Deploy history updated (fallback method)"
|
||||
fi
|
||||
fi
|
||||
) 9>"$lock_file"
|
||||
}
|
||||
else
|
||||
# Fallback: если flock недоступен
|
||||
echo "⚠️ flock not available, using simple update"
|
||||
@@ -717,14 +709,14 @@ jobs:
|
||||
local lock_file="${history_file}.lock"
|
||||
|
||||
if command -v flock > /dev/null 2>&1; then
|
||||
(
|
||||
if flock -s 9 "$lock_file"; then
|
||||
if [ -f "$history_file" ]; then
|
||||
cat "$history_file"
|
||||
# Используем flock напрямую с файлом для чтения
|
||||
flock -s "$lock_file" sh -c "
|
||||
if [ -f \"$history_file\" ]; then
|
||||
cat \"$history_file\"
|
||||
else
|
||||
echo ""
|
||||
echo \"\"
|
||||
fi
|
||||
else
|
||||
" || {
|
||||
echo "⚠️ Failed to acquire lock, using fallback method"
|
||||
# Fallback: простое чтение без блокировки
|
||||
if [ -f "$history_file" ]; then
|
||||
@@ -732,8 +724,7 @@ jobs:
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
) 9>"$lock_file"
|
||||
}
|
||||
else
|
||||
# Fallback: если flock недоступен
|
||||
if [ -f "$history_file" ]; then
|
||||
@@ -752,23 +743,17 @@ jobs:
|
||||
local history_size="${DEPLOY_HISTORY_SIZE:-10}"
|
||||
|
||||
if command -v flock > /dev/null 2>&1; then
|
||||
# Используем flock с файлом напрямую (работает в zsh и bash)
|
||||
# Zsh поддерживает только дескрипторы 0-9, поэтому используем 9
|
||||
(
|
||||
if flock -x 9 "$lock_file"; then
|
||||
# Используем flock напрямую с файлом (работает в zsh и bash)
|
||||
flock -x "$lock_file" sh -c "
|
||||
# Записываем новую запись
|
||||
echo "$entry" >> "$history_file"
|
||||
echo \"$entry\" >> \"$history_file\"
|
||||
|
||||
# Обрезаем файл атомарно
|
||||
tail -n "$history_size" "$history_file" > "${history_file}.tmp"
|
||||
mv "${history_file}.tmp" "$history_file"
|
||||
tail -n $history_size \"$history_file\" > \"${history_file}.tmp\"
|
||||
mv \"${history_file}.tmp\" \"$history_file\"
|
||||
|
||||
echo "✅ History updated safely"
|
||||
else
|
||||
echo "❌ Failed to acquire lock on $history_file"
|
||||
exit 1
|
||||
fi
|
||||
) 9>"$lock_file"
|
||||
echo \"✅ History updated safely\"
|
||||
"
|
||||
else
|
||||
# Fallback: простая запись без блокировки
|
||||
echo "$entry" >> "$history_file"
|
||||
|
||||
Reference in New Issue
Block a user