update low and add jenkins api
This commit is contained in:
@@ -76,6 +76,12 @@ class AutonomousPipelineSave(BaseModel):
|
||||
phases: list[LowCodePhaseIn] = Field(default_factory=list)
|
||||
|
||||
|
||||
class JenkinsTriggerRequest(BaseModel):
|
||||
server_url: str = ""
|
||||
job: str
|
||||
parameters: dict[str, str] = Field(default_factory=dict)
|
||||
|
||||
|
||||
def validate_config(config_text: str):
|
||||
try:
|
||||
yaml.safe_load(config_text)
|
||||
@@ -239,6 +245,44 @@ def put_autonomous_pipeline(
|
||||
raise HTTPException(status_code=500, detail=f"Database error: {str(e)}")
|
||||
|
||||
|
||||
@app.post("/jenkins/trigger")
|
||||
def jenkins_trigger(
|
||||
req: JenkinsTriggerRequest,
|
||||
user: User | None = Depends(get_current_user) if REQUIRE_AUTH_FOR_GENERATE else None,
|
||||
):
|
||||
if user is None:
|
||||
raise HTTPException(status_code=401, detail="Authentication required")
|
||||
from backend.jenkins_client import default_jenkins_credentials, trigger_jenkins_job
|
||||
|
||||
default_url, ju, jt, verify_ssl = default_jenkins_credentials()
|
||||
base = (req.server_url or "").strip() or default_url
|
||||
if not base:
|
||||
raise HTTPException(
|
||||
status_code=400,
|
||||
detail="Укажите Jenkins URL в фазе или задайте JENKINS_DEFAULT_URL в окружении backend.",
|
||||
)
|
||||
if not ju or not jt:
|
||||
raise HTTPException(
|
||||
status_code=503,
|
||||
detail="Задайте JENKINS_USER и JENKINS_TOKEN (API token) в окружении backend.",
|
||||
)
|
||||
job = (req.job or "").strip()
|
||||
if not job:
|
||||
raise HTTPException(status_code=400, detail="Поле job обязательно.")
|
||||
|
||||
ok, _code, msg, detail = trigger_jenkins_job(
|
||||
server_url=base,
|
||||
job_path=job,
|
||||
parameters=req.parameters,
|
||||
username=ju,
|
||||
token=jt,
|
||||
verify_ssl=verify_ssl,
|
||||
)
|
||||
if not ok:
|
||||
raise HTTPException(status_code=502, detail={"message": msg, **detail})
|
||||
return {"ok": True, "message": msg, **detail}
|
||||
|
||||
|
||||
@app.get("/chat/history")
|
||||
def chat_history(
|
||||
limit: int = 500,
|
||||
|
||||
Reference in New Issue
Block a user