3 года назад
GitHub: Authentication failed on git push
Столкнулся тут с проблемой внесения изменений в одну из своих библиотек на GitHub, а именно ошибкой аутентификации. Достаточно странно. Пароль точно верный, но в чем же дело? Стал вспоминать, что последнее делал в GitHub и вспомнил. Я включил двухфакторную аутентификацию. Лечится эта проблема просто. Заходим в Settings -> Developer settings (отдельная кнопка внизу в левом меню). В открывшемся окне выбираем Personal access tokens и наживаем на кнопку Generate new token. В открывшемся окне указываем...
Обновление метаданных в GitHub при изменении их в OpenMetadata При изменении метаданных в OpenMetadata CI/CD-пайплайн может автоматически обновить метаданные в GitHub. Для автоматического обновления метаданных в GitHub при изменении их в OpenMetadata можно настроить CI/CD-пайплайн. В этом примере опиcывается, как это можно сделать с использованием популярных инструментов, таких как GitHub Actions (для CI/CD) и OpenMetadata API (для взаимодействия с OpenMetadata). Шаги для настройки CI/CD-пайплайна: 1. Подготовка окружения Убедитесь, что у вас есть доступ к OpenMetadata API. Создайте токен доступа (API Token) в OpenMetadata для аутентификации. Настройте репозиторий в GitHub, где будут храниться метаданные (например, в формате JSON или YAML). 2. Создание скрипта для обновления метаданных Напишите скрипт (например, на Python), который будет: Получать измененные метаданные из OpenMetadata через API. Сохранять их в файлы (например, JSON или YAML) в репозитории GitHub. Фиксировать изменения и отправлять их в репозиторий. Пример скрипта на Python: import requests import json import os from git import Repo # Конфигурация OPENMETADATA_API_URL = "https://your-openmetadata-server/api/v1" API_TOKEN = "your-openmetadata-api-token" REPO_PATH = "/path/to/your/github/repo" GITHUB_BRANCH = "main" # Получение метаданных из OpenMetadata def fetch_metadata(): headers = {"Authorization": f"Bearer {API_TOKEN}"} response = requests.get(f"{OPENMETADATA_API_URL}/metadata", headers=headers) if response.status_code == 200: return response.json() else: raise Exception(f"Failed to fetch metadata: {response.status_code}") # Сохранение метаданных в файл def save_metadata_to_file(metadata, file_path): with open(file_path, "w") as f: json.dump(metadata, f, indent=2) # Обновление репозитория GitHub def update_github_repo(metadata): repo = Repo(REPO_PATH) repo.git.checkout(GITHUB_BRANCH) # Сохраняем метаданные в файл metadata_file = os.path.join(REPO_PATH, "metadata.json") save_metadata_to_file(metadata, metadata_file) # Фиксируем изменения repo.git.add(metadata_file) repo.git.commit("-m", "Auto-update metadata from OpenMetadata") repo.git.push("origin", GITHUB_BRANCH) if __name__ == "__main__": metadata = fetch_metadata() update_github_repo(metadata) 3. Настройка GitHub Actions Создайте файл .github/workflows/update-metadata.yml в вашем репозитории для настройки CI/CD-пайплайна. Пример конфигурации GitHub Actions: name: Update Metadata from OpenMetadata on: schedule: - cron: "0 * * * *" # Запускать каждый час workflow_dispatch: # Ручной запуск jobs: update-metadata: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.9" - name: Install dependencies run: | python -m pip install --upgrade pip pip install requests gitpython - name: Run metadata update script env: OPENMETADATA_API_TOKEN: ${{ secrets.OPENMETADATA_API_TOKEN }} run: | python scripts/update_metadata.py - name: Commit and push changes env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" git add . git commit -m user.nameate metadata from OpenMetadata" git push 4. Настройка секретов в GitHub Добавьте токен OpenMetadata API в секреты репозитория GitHub: Перейдите в Settings > Secrets > Actions. Создайте новый секрет с именем OPENMETADATA_API_TOKEN и вставьте значение токена. Убедитесь, что у GitHub Actions есть доступ к репозиторию (по умолчанию доступ уже есть). 5. Тестирование и запуск Запустите пайплайн вручную через GitHub Actions. Убедитесь, что метаданные успешно обновляются в репозитории. Настроенный CI/CD-пайплайн автоматически обновляет метаданные в GitHub при их изменении в OpenMetadata. Это обеспечивает синхронизацию данных и возможность отслеживать изменения через Git.