Ошибка 400 Bad Request при запуске пайплайнов в ТестОпс при интеграции с Gitlab

Последние изменения: 20.12.2024

Описание проблемы

Ошибка 400 Bad Request возникает при запуске пайплайнов из ТестОпс или при взаимодействии с интеграцией GitLab CI/CD. Эта ошибка указывает на проблему в передаваемых запросах, параметрах или логике правил в пайплайне.

Основные причины ошибки 400:

  1. Некорректные правила в .gitlab-ci.yml:

    • Логические операторы и условия в workflow rules написаны неверно.

    • Триггеры для запуска пайплайнов не разрешают выполнение jobs.

  2. Проблемы с токенами и авторизацией:

    • Токен доступа GitLab Personal Access Token отсутствует, истек или имеет недостаточные права.

  3. Ошибки в конфигурации интеграции ТестОпс:

    • Неверный URL GitLab или идентификатор проекта.

    • Сбой при сохранении токена.

  4. Ограничения на стороне сети и VPN:

    • ТестОпс не может достучаться до GitLab из-за firewall, VPN или отсутствия статического IP.

Пошаговое решение

1. Проверьте правила в .gitlab-ci.yml

Откройте конфигурацию пайплайна и добавьте корректные workflow rules:

workflow:
  rules:
    - if: '$CI_PIPELINE_SOURCE == "api"'
      when: never
    - if: '$CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "trigger"'
      when: always
  • Убедитесь, что операторы || корректно разделяют условия.

  • Если используете trigger с API, включите соответствующие правила.

Пример исправленного пайплайна:

stages:
  - test

run_tests:
  stage: test
  script:
    - echo "Running tests..."
  rules:
    - if: '$CI_PIPELINE_SOURCE == "web"'
      when: always
    - if: '$CI_PIPELINE_SOURCE == "api"'
      when: never

2. Проверьте токен доступа GitLab

  1. Зайдите в GitLab → Settings → Access Tokens.

  2. Убедитесь, что токен:

    • Имеет права: api и read_repository.

    • Создан на уровне группы, если репозиторий в группе.

  3. Вставьте токен в ТестОпс:

    • Администрирование → Интеграции → GitLab → Token.

  4. Сохраните и проверьте соединение.

Важно: После проверки соединения токен не отобразится в интерфейсе — это нормальное поведение системы.

3. Проверьте настройки сети и VPN

  1. Если GitLab доступен только через VPN, настройте whitelist на стороне вашей сети:

    • Статический IP адрес инстанса ТестОпс должен быть добавлен в разрешенные.

    • Для SaaS-версии уточните статический IP у технической поддержки.

  2. Проверьте файрволы и сетевые политики на блокировку исходящих соединений.

4. Удалите и пересоздайте Джобу в ТестОпс

Если ошибка сохраняется:

  1. Удалите проблемную джобу из интерфейса ТестОпс.

  2. Запустите пайплайн вручную из GitLab CI/CD:

  3. Проверьте, что ТестОпс автоматически создал джобу с корректными настройками.

5. Проверка логов

Если ошибка 400 не устраняется, выполните следующее:

  1. Проверьте логи ТестОпс на наличие детализированных сообщений:

    logger_name: "io.qameta.allure.testops.integration.api.retrofit.RetrofitUtils"
    message: "Pipeline will not run for the selected trigger..."
    
  2. Убедитесь, что конфигурация pipeline соответствует документации.

Заключение
Ошибка 400 Bad Request при запуске пайплайнов часто связана с неверной настройкой правил в .gitlab-ci.yml или проблемами с авторизацией. Следуя описанным шагам:

  • Проверьте workflow rules.

  • Обновите токен доступа.

  • Убедитесь в правильных сетевых настройках и отсутствии блокировок.

Если проблема сохраняется, обратитесь в техническую поддержку, приложив:

  • Конфигурацию пайплайна.

  • Скриншоты настроек интеграции.

  • Логи системы.

Эти шаги помогут быстро локализовать и устранить ошибку 400 Bad Request при работе с ТестОпс и GitLab CI/CD.

Помогла ли вам статья?