diff --git a/backend/routes/workflow.py b/backend/routes/workflow.py index 6728362..e6edda5 100644 --- a/backend/routes/workflow.py +++ b/backend/routes/workflow.py @@ -185,7 +185,6 @@ async def trigger_workflow_get( repo: str = Query(None), workflow_id: str = Query(None), ref: str = Query("main"), - tests: str = Query(None), ui: bool = Query(False) ): """ @@ -193,7 +192,7 @@ async def trigger_workflow_get( Примеры: - /workflow/trigger?owner=naspirato&repo=my-repo&workflow_id=ci.yml - - /workflow/trigger?owner=naspirato&repo=my-repo&workflow_id=ci.yml&ref=main&tests=unit,integration + - /workflow/trigger?owner=naspirato&repo=my-repo&workflow_id=ci.yml&ref=main """ # Определяем режим (UI или JSON) accept_header = request.headers.get("Accept", "") @@ -218,15 +217,11 @@ async def trigger_workflow_get( # Добавляем все остальные параметры (workflow inputs) query_params = dict(request.query_params) - excluded_params = {"owner", "repo", "workflow_id", "ref", "ui", "tests", "return_url"} + excluded_params = {"owner", "repo", "workflow_id", "ref", "ui", "return_url"} for key, value in query_params.items(): if key not in excluded_params and value: params.append(f"{key}={value}") - # Если есть tests, добавляем его - if tests: - params.append(f"tests={tests}") - query_string = "&".join(params) return RedirectResponse(url=f"/?{query_string}") @@ -272,10 +267,6 @@ async def trigger_workflow_get( if key not in excluded_params and value: inputs[key] = value - # Если есть tests (для обратной совместимости) - if tests: - inputs["tests"] = tests - return await _trigger_and_show_result( request, owner, repo, workflow_id, ref, inputs, return_json, return_url ) @@ -287,8 +278,7 @@ async def trigger_workflow_post( owner: str = Form(None), repo: str = Form(None), workflow_id: str = Form(None), - ref: str = Form("main"), - tests: str = Form("") + ref: str = Form("main") ): """ POST endpoint для запуска workflow из формы @@ -324,7 +314,7 @@ async def trigger_workflow_post( inputs = {} # Обрабатываем все поля кроме служебных - excluded_fields = {"owner", "repo", "workflow_id", "ref", "tests", "return_url"} + excluded_fields = {"owner", "repo", "workflow_id", "ref", "return_url"} for key, value in form_data.items(): if key not in excluded_fields: # Обработка boolean полей - если значение есть, используем его @@ -335,10 +325,6 @@ async def trigger_workflow_post( inputs[key] = value # Если значение пустое, но это может быть необязательное поле - пропускаем - # Если есть tests (для обратной совместимости) - if tests: - inputs["tests"] = tests - return await _trigger_and_show_result( request, owner, repo, workflow_id, ref, inputs, return_json=False, return_url=return_url ) diff --git a/frontend/templates/index.html b/frontend/templates/index.html index 31ecb6b..44a4057 100644 --- a/frontend/templates/index.html +++ b/frontend/templates/index.html @@ -150,7 +150,7 @@

Run GitHub Action

const workflowInputs = {}; // Список служебных параметров, которые не являются workflow inputs - const excludedParams = ['owner', 'repo', 'workflow_id', 'ref', 'ui', 'tests']; + const excludedParams = ['owner', 'repo', 'workflow_id', 'ref', 'ui', 'return_url']; // Извлекаем все параметры кроме служебных for (const [key, value] of urlParams.entries()) { @@ -1000,6 +1000,24 @@

Run GitHub Action

// Инициализация при загрузке function initAll() { + // Инициализируем скрытое поле return_url из URL параметров, если его нет + const form = document.getElementById('workflowForm'); + if (form) { + const urlParams = new URLSearchParams(window.location.search); + const returnUrlFromUrl = urlParams.get('return_url'); + if (returnUrlFromUrl) { + let returnUrlInput = form.querySelector('input[name="return_url"]'); + if (!returnUrlInput) { + // Создаем скрытое поле, если его нет + returnUrlInput = document.createElement('input'); + returnUrlInput.type = 'hidden'; + returnUrlInput.name = 'return_url'; + form.insertBefore(returnUrlInput, form.firstChild); + } + returnUrlInput.value = returnUrlFromUrl; + } + } + initSearchableSelect('workflow_search', 'workflow_id', 'workflow_dropdown'); initSearchableSelect('branch_search', 'ref', 'branch_dropdown'); setupRepositoryField(); diff --git a/frontend/templates/result.html b/frontend/templates/result.html index f74a6c0..8587d94 100644 --- a/frontend/templates/result.html +++ b/frontend/templates/result.html @@ -90,7 +90,7 @@

Success