analyze_jenkins_error ν¨μ λ΄μμ result["ai_text"]μ μ§μ μ¬μ©νκ³ μμ΅λλ€. resultκ° μ±κ³΅ μ¬λΆμ λ°λΌ κ΅¬μ‘°κ° λ¬λΌμ§ μ μμΌλ―λ‘, result["ai_text"]μ μ κ·ΌνκΈ° μ μ resultμ μ‘΄μ¬ μ¬λΆμ ai_text ν€μ μ‘΄μ¬ μ¬λΆλ₯Ό νμΈνλ κ²μ΄ νμν©λλ€. νΉν result["success"]κ° FalseμΈ κ²½μ° ai_textκ° μμ μ μμΌλ―λ‘, μ΄ λΆλΆ κ²μ¦μ΄ νμν©λλ€.
μ) ai_text = result.get("ai_text", "") λ‘ λ체 κΆκ³ .
save_review ν¨μλ₯Ό νΈμΆ μμ commit_idκ°μ f"#{jenkins_info.get('build_number', '')}" νμμΌλ‘ μ λ¬νκ³ μμ΅λλ€. μ΄ κ²½μ° build_number κ°μ΄ μμ κ²½μ° #λ§ λ€μ΄κ°λ λ¬Έμ κ° λ°μν μ μμ΅λλ€. λν, jenkins_info.get('build_number', '')κ° ""μ΄λ©΄ #λ§ λ¨λ λ¬Έμ λ₯Ό μ¬μ μ λ°©μ§νκΈ° μν΄ μ‘°κ±΄ κ²μ¬λ₯Ό μΆκ°νλ κ²μ κΆκ³ ν©λλ€.
jenkins_info.get('project', 'unknown')μ κ°μ μ¬μ©μ μ
λ ₯ κ°μ νμΌ μ΄λ¦μΌλ‘ μ§μ μ¬μ©νκ³ μμ΅λλ€. project κ°μ΄ ../μ²λΌ νΉμ λ¬Έμμ΄μ ν¬ν¨ν κ²½μ° μμ λλ ν 리 μ κ·Όμ΄ κ°λ₯νλ―λ‘, 보μμ μ·¨μ½ν μ μμ΅λλ€. μλ₯Ό λ€μ΄ project κ°μ΄ ../../../etc/passwdκ° λ κ²½μ°, μμ€ν
νμΌμ μ κ·Όν μ μμ΅λλ€. λ°λΌμ νμΌλͺ
μμ± μμ μ
λ ₯ κ° κ²μ¦μ΄λ μ κ·νκ° νμνκ³ , μμμΉ λͺ»ν λ¬Έμλ μ κ±°νκ±°λ μΉνν΄μΌ ν©λλ€.
λ‘κ·ΈνμΌμ μμ±ν λ strip_markdown(analysis["ai_result"]) νΈμΆκ³Ό μ¬λ¬ f.write()λ₯Ό λ°λ³΅μ μΌλ‘ μ¬μ©νκ³ μμ΅λλ€. μ΄ λ°©μμ νμΌ μ°κΈ° μ IO λΆνκ° ν΄ μ μμΌλ©°, νΉν ai_resultκ° ν° κ²½μ° μ±λ₯ μ νλ‘ μ΄μ΄μ§ μ μμ΅λλ€. μ¬λ¬ f.write() νΈμΆμ ν λ²μ f.write()λ‘ ν΅ν©νλ κ²μ κ³ λ €ν΄λ³Ό μ μμ΅λλ€. μ)
content = f"[AI Jenkins λΉλ λΆμ]\nμκ°: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\nνλ‘μ νΈ: {jenkins_info.get('project', '')}\n..."
f.write(content)
print() μ¬μ©μ νΌν΄μΌ ν©λλ€. νΉν λ‘κΉ
μ΄ μλ λλ²κΉ
λͺ©μ μΌλ‘λ§ μ¬μ©λλ printλ νλ‘λμ
νκ²½μμλ λ¬Έμ κ° λλ―λ‘, logging λͺ¨λ μ¬μ©μ κΆκ³ ν©λλ€.
μ)
import logging
logging.info("π§ Jenkins λΉλ μ€ν¨ μμ : %s #%s", jenkins_info.get('project'), jenkins_info.get('build_number'))
call_llm(prompt) ν¨μμ μΈμλ‘ ν둬ννΈλ₯Ό κ·Έλλ‘ μ λ¬νκ³ μμ΅λλ€. νμ§λ§ ν¨μλͺ
μ΄ call_llmμ΄κ³ , μ΄λ λ¨μν μ
λ ₯ λ°μ΄ν°λ₯Ό λ°λ κ²μ΄ μλλΌ AI νΈμΆ μν μ νκ² λ©λλ€. λ€λ§, promptμ μ§μ μ μΌλ‘ μ¬μ©λλ λ°μ΄ν°κ° jenkins_info.get(...) νμμΌλ‘ κ°μ Έμ€λ―λ‘, μ
λ ₯κ° μμ²΄κ° μλͺ»λμμ λ μμΈ μ²λ¦¬ μμ΄ κ·Έλλ‘ μ¬μ©λκ³ μμ΅λλ€. μ
λ ₯κ°μ λν κΈ°λ³Έμ μΈ νμ
νμΈ λ° μ ν¨μ± κ²μ¦μ κΆκ³ ν©λλ€.
f.write() νΈμΆμ ν΅ν©.print()λ loggingμΌλ‘ λ체 κΆκ³ .μ΄μ μμ: μμ λ¬Έμ λ€μ μ μΈνκ³ λ μ½λ 컨벀μ λ° λ‘μ§ λ©΄μμ ν¬κ² λ¬Έμ λ μμ΅λλ€.