diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 74067bd..3f84baa 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -21,13 +21,11 @@ jobs: run: | echo "🔍 Проверяем структуру интеграции..." - # Проверяем наличие директории интеграции if [ ! -d "custom_components/motion_light" ]; then echo "❌ Ошибка: директория custom_components/motion_light не найдена!" exit 1 fi - # Проверяем наличие обязательных файлов for file in "__init__.py" "manifest.json"; do if [ ! -f "custom_components/motion_light/$file" ]; then echo "❌ Ошибка: файл $file не найден!" @@ -37,7 +35,6 @@ jobs: echo "✅ Все обязательные файлы на месте." - # Валидируем manifest.json python3 << 'EOF' import json import sys @@ -51,7 +48,6 @@ jobs: print(f"❌ Ошибка валидации JSON: {e}") sys.exit(1) - # Проверяем обязательные поля для HA required_fields = ['domain', 'name', 'version', 'documentation', 'codeowners', 'iot_class'] missing = [f for f in required_fields if f not in manifest] @@ -59,12 +55,10 @@ jobs: print(f"❌ Отсутствуют обязательные поля в manifest.json: {', '.join(missing)}") sys.exit(1) - # Проверяем соответствие domain и имени директории if manifest['domain'] != 'motion_light': print(f"❌ Domain '{manifest['domain']}' не совпадает с именем директории 'motion_light'!") sys.exit(1) - # Проверяем формат версии (semver) version = manifest['version'] parts = version.split('.') if len(parts) != 3 or not all(p.isdigit() for p in parts): @@ -107,18 +101,14 @@ jobs: run: | echo "🔐 Устанавливаем SSL сертификат Gitea..." - # Убеждаемся, что необходимые пакеты установлены apt-get update -qq apt-get install -y -qq ca-certificates openssl curl > /dev/null 2>&1 - # Создаем директорию для сертификатов mkdir -p /usr/local/share/ca-certificates - # Скачиваем сертификат с сервера Gitea echo "📥 Скачиваем сертификат с 192.168.200.208:3000..." echo | openssl s_client -connect 192.168.200.208:3000 -servername 192.168.200.208 2>/dev/null | openssl x509 > /tmp/gitea.crt - # Проверяем, что сертификат получен if [ ! -s /tmp/gitea.crt ]; then echo "❌ Не удалось получить сертификат через openssl, пробуем альтернативный способ..." openssl s_client -showcerts -connect 192.168.200.208:3000 /dev/null | openssl x509 -outform PEM > /tmp/gitea.crt @@ -132,29 +122,45 @@ jobs: echo "✅ Сертификат получен:" head -3 /tmp/gitea.crt - # Копируем в доверенные сертификаты cp /tmp/gitea.crt /usr/local/share/ca-certificates/gitea.crt - # Обновляем хранилище сертификатов echo "🔄 Обновляем хранилище сертификатов..." update-ca-certificates echo "✅ Сертификат установлен в доверенные!" ls -la /usr/local/share/ca-certificates/gitea.crt - # Тестируем подключение echo "🧪 Тестируем HTTPS подключение..." curl -I https://192.168.200.208:3000 && echo "✅ HTTPS подключение работает!" || echo "⚠️ curl test completed with warnings" - name: Run Semantic Release env: GITEA_TOKEN: ${{ secrets.PAT_TOKEN }} - # Указываем Python использовать системные сертификаты - REQUESTS_CA_BUNDLE: /etc/ssl/certs/ca-certificates.crt - CURL_CA_BUNDLE: /etc/ssl/certs/ca-certificates.crt + PYTHONHTTPSVERIFY: "0" + CURL_CA_BUNDLE: "" + REQUESTS_CA_BUNDLE: "" + SSL_CERT_FILE: "" run: | - # Дополнительно обновляем certifi, чтобы он использовал системные сертификаты - python3 -c "import certifi; import shutil; shutil.copy('/etc/ssl/certs/ca-certificates.crt', certifi.where())" + cat > /tmp/run_semantic_release.py << 'PYEOF' + import os + import sys + import ssl - # Запускаем semantic-release - semantic-release version \ No newline at end of file + ssl._create_default_https_context = ssl._create_unverified_context + + os.environ['PYTHONHTTPSVERIFY'] = '0' + os.environ['CURL_CA_BUNDLE'] = '' + os.environ['REQUESTS_CA_BUNDLE'] = '' + os.environ['SSL_CERT_FILE'] = '' + + try: + import urllib3 + urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + except: + pass + + from semantic_release.cli import main + sys.exit(main()) + PYEOF + + python3 /tmp/run_semantic_release.py version \ No newline at end of file