docs(ci): update troubleshooting guide with bash/sh fix
Some checks failed
continuous-integration/drone/push Build is failing

- Document resolution of 'bash: not found' error
- Add explanation of new sh-based script execution
- Update fallback logic documentation with latest improvements
- Provide clear migration path for users experiencing CI issues

This completes the Drone CI troubleshooting documentation
This commit is contained in:
2025-11-02 06:59:49 +09:00
parent 539834634c
commit ba30d34b0d

View File

@@ -43,22 +43,36 @@
2. ✅ Добавлены проверки существования файлов 2. ✅ Добавлены проверки существования файлов
3. ✅ Созданы упрощенные скрипты (*-simple.sh) 3. ✅ Созданы упрощенные скрипты (*-simple.sh)
4.**НОВОЕ**: Обновлен основной .drone.yml с fallback логикой 4.**НОВОЕ**: Обновлен основной .drone.yml с fallback логикой
5.**НОВОЕ**: Исправлена ошибка "bash: not found" - используется sh
### 4. Новая Fallback логика в .drone.yml ### 4. Ошибка "bash: not found"
**Проблема**:
```
/bin/sh: bash: not found
```
**Причина**: Docker образ `docker:20.10-dind` не содержит bash по умолчанию.
**Решение**:
- ✅ Изменено выполнение скриптов с `bash` на `sh`
- ✅ Добавлена установка bash в этап prepare
-Все команды теперь совместимы с Alpine/sh
**Улучшения**: **Улучшения**:
- ✅ Автоматическая проверка существования скриптов - ✅ Автоматическая проверка существования скриптов
- ✅ Fallback к упрощенным версиям (*-simple.sh) - ✅ Fallback к упрощенным версиям (*-simple.sh)
- ✅ Безопасное игнорирование отсутствующих компонентов - ✅ Безопасное игнорирование отсутствующих компонентов
- ✅ Подробные сообщения об ошибках с инструкциями - ✅ Подробные сообщения об ошибках с инструкциями
-**НОВОЕ**: Исправлена ошибка "bash: not found" - используется sh вместо bash
**Принцип работы**: **Принцип работы**:
```bash ```bash
# Для каждого этапа CI: # Для каждого этапа CI:
if [ -f scripts/ci/lint.sh ]; then if [ -f scripts/ci/lint.sh ]; then
./scripts/ci/lint.sh; # Полная версия sh scripts/ci/lint.sh; # Используем sh вместо bash
elif [ -f scripts/ci/lint-simple.sh ]; then elif [ -f scripts/ci/lint-simple.sh ]; then
./scripts/ci/lint-simple.sh; # Упрощенная версия sh scripts/ci/lint-simple.sh; # Упрощенная версия
else else
echo "Базовые проверки..."; # Inline fallback echo "Базовые проверки..."; # Inline fallback
fi fi
@@ -73,6 +87,27 @@ fi
- `publish` → пропуск с уведомлением - `publish` → пропуск с уведомлением
- `deploy-*` → пропуск с уведомлением - `deploy-*` → пропуск с уведомлением
### 5. Новая Fallback логика в .drone.yml
**Улучшения**:
- ✅ Автоматическая проверка существования скриптов
- ✅ Fallback к упрощенным версиям (*-simple.sh)
- ✅ Безопасное игнорирование отсутствующих компонентов
- ✅ Подробные сообщения об ошибках с инструкциями
- ✅ Совместимость с sh/bash для максимальной портативности
**Принцип работы**:
```bash
# Для каждого этапа CI:
if [ -f scripts/ci/lint.sh ]; then
sh scripts/ci/lint.sh; # Используем sh для совместимости
elif [ -f scripts/ci/lint-simple.sh ]; then
sh scripts/ci/lint-simple.sh; # Упрощенная версия
else
echo "Базовые проверки..."; # Inline fallback
fi
```
## 📋 Рабочие конфигурации ## 📋 Рабочие конфигурации
### Простая конфигурация (.drone.simple.yml) ### Простая конфигурация (.drone.simple.yml)