diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ed48f5a..4b38f9c 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -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 - # Записываем новую запись - echo "$entry" >> "$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" + # Используем flock напрямую с файлом (работает в zsh и bash) + flock -x "$lock_file" sh -c " + # Записываем новую запись + echo \"$entry\" >> \"$history_file\" + + # Обрезаем файл атомарно + tail -n $history_size \"$history_file\" > \"${history_file}.tmp\" + mv \"${history_file}.tmp\" \"$history_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 - # Заменяем последнюю строку со статусом deploying на финальный статус - 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" - fi + # Используем 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)\" 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 + echo \"⚠️ History file not found, skipping update\" fi - ) 9>"$lock_file" + " || { + 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 + } else # Fallback: если flock недоступен echo "⚠️ flock not available, using simple update" @@ -717,23 +709,22 @@ 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" - else - echo "" - fi + # Используем flock напрямую с файлом для чтения + flock -s "$lock_file" sh -c " + if [ -f \"$history_file\" ]; then + cat \"$history_file\" else - echo "⚠️ Failed to acquire lock, using fallback method" - # Fallback: простое чтение без блокировки - if [ -f "$history_file" ]; then - cat "$history_file" - else - echo "" - fi + echo \"\" fi - ) 9>"$lock_file" + " || { + echo "⚠️ Failed to acquire lock, using fallback method" + # Fallback: простое чтение без блокировки + if [ -f "$history_file" ]; then + cat "$history_file" + else + echo "" + fi + } 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 - # Записываем новую запись - echo "$entry" >> "$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" + # Используем flock напрямую с файлом (работает в zsh и bash) + flock -x "$lock_file" sh -c " + # Записываем новую запись + echo \"$entry\" >> \"$history_file\" + + # Обрезаем файл атомарно + tail -n $history_size \"$history_file\" > \"${history_file}.tmp\" + mv \"${history_file}.tmp\" \"$history_file\" + + echo \"✅ History updated safely\" + " else # Fallback: простая запись без блокировки echo "$entry" >> "$history_file"