Free lesson · LLMOps Engineering

Pre-commit hooks மற்றும் தானியங்கி dependency புதுப்பிப்புகளை செயல்படுத்துதல்

Dependency மேலாண்மைக்காக pre-commit hooks-ஐ Renovate உடன் இணைத்து code quality automation-ஐ நீங்கள் உருவாக்குவீர்கள். Pre-commit hooks: Python (ruff format, ruff check, mypy), YAML சரிபார்ப்பு (prompts மற்றும் configs-க்கு yamllint), JSON schema சரிபார்ப்பு (Pydantic model export-ஐப் பயன்படுத்தி prompt templates மற்றும் eval datasets-க்கு), மற்றும் secret கண்டறிதல் (API key commits-ஐத் தடுக்க detect-secrets) ஆகியவற்றுக்கான hooks உடன் .pre-commit-config.yaml-ஐ கட்டமைக்கவும். Hooks-ஐ செயல்படுத்த pre-commit install-ஐ இயக்கி, பின்னர் சோதிக்கவும்: hardcoded OpenAI key கொண்ட ஒரு file-ஐ commit செய்யவும் — அது தடுக்கப்படுகிறதா என்பதைச் சரிபார்க்கவும். Renovate அமைப்பு: உங்கள் repository-ஐ scan செய்து dependency புதுப்பிப்புகளுக்கான PRs-ஐ உருவாக்கும் GKE CronJob ஆக Renovate-ஐ deploy செய்யவும். renovate.json-ஐ கட்டமைக்கவும்: Python packages-ஐ வகை வாரியாக குழுவாக்கவும் (AI SDKs: openai, google-generativeai; frameworks: fastapi, pydantic; testing: pytest, deepeval), patch versions-க்கு auto-merge அமைக்கவும், major/minor-க்கு manual review தேவை என அமைக்கவும். Renovate changelogs மற்றும் compatibility குறிப்புகளுடன் atomic PRs-ஐ உருவாக்குகிறது. ஒப்பிடுக: Renovate (on-cluster, கட்டமைக்கக்கூடியது) vs Dependabot (GitHub-native, எளிமையானது). கண்காணிக்கவும்: வாரத்திற்கு உருவாக்கப்பட்ட PRs, auto-merge விகிதம், security patches-க்கான time-to-update.

Course: DevOps Foundations for GenAI Engineers · Chapter 1 · Git Workflows for AI Teams

Free to read — no subscription required.

அறிமுகம்

ஒரு repo-வில் சரிபார்க்கப்படாத commits-ம் நிர்வகிக்கப்படாத dependency drift-ம் குவிய அனுமதித்தால், ஒவ்வொரு pull request-ம் தொடர்பில்லாத lint சத்தத்துடன் போராட வேண்டியிருக்கும், ஒவ்வொரு காலாண்டு upgrade-ம் பல வாரங்கள் நீடிக்கும் தீயணைப்புப் பணியாக மாறும் — மேலும் எப்போதாவது ஒரு developer ஒரு API key, தவறான வடிவிலான prompt JSON, அல்லது 200 MB checkpoint ஒன்றை commit செய்துவிடுவார், அதை production உடையும் வரை யாரும் கண்டுபிடிக்க மாட்டார்கள். Pre-commit hooks மற்றும் Renovate ஆகியவை இந்த இரண்டு வகை தோல்விகளையும் தடுக்கும் மிகக் குறைந்த செலவிலான இரண்டு கட்டுப்பாடுகள்: hooks தவறான commits-ஐ remote-ஐ அடைவதற்கு முன்பே தடுக்கின்றன, Renovate ஏதேனும் ஒன்று புதிய பதிப்பை வெளியிடும் ஒவ்வொரு முறையும் label இடப்பட்ட PR ஒன்றைத் திறப்பதன் மூலம் dependency surface-ஐ நேர்மையாக வைத்திருக்கிறது. இந்தப் பாடத்தின் முடிவில், prompt JSON, JSONL training rows மற்றும் secrets ஆகியவற்றைச் சரிபார்க்கும் ஒரு .pre-commit-config.yaml-ஐயும், LLM SDK bumps-ஐ dev-dependency patches-இலிருந்து வேறுபட்ட முறையில் கையாளும் package rules கொண்ட ஒரு renovate.json-ஐயும் நீங்கள் எழுத முடியும்.

முக்கிய சொற்கள்

  • Pre-commit framework — .pre-commit-config.yaml-இல் அறிவிக்கப்பட்ட hooks-ஐ ஒருங்கிணைக்கும் Python கருவி (pre-commit); push செய்வதற்கு முன் தவறான commits-ஐ உள்ளூரில் தடுக்க ஒவ்வொரு developer-ம் இயக்கும் ஒரே பொறிமுறை இதுதான் என்பதால் இங்கே பொருத்தமானது.
  • Hook repository — மறுபயன்பாட்டுக்கான hook வரையறைகளை (id, language, files pattern, entry command) .pre-commit-hooks.yaml மூலம் வெளிப்படுத்தும் ஒரு Git repo; பொதுவான சரிபார்ப்புகளை மீண்டும் செயல்படுத்துவதைத் தவிர்க்க இவற்றை உங்கள் config-இல் ஒருங்கிணைக்கிறீர்கள்.
  • Renovate — npm, PyPI, Docker, Helm அல்லது GitHub Action பதிப்புகள் மாறும்போது PRs-ஐத் திறக்கும் ஒரு dependency-update bot; dependency upgrades-ஐ காலாண்டு தீயணைப்புப் பணியாக இல்லாமல் நிலையான சிறு ஓட்டமாக மாற்றும் பொறிமுறை இதுதான்.
  • Package rule — packages-இன் ஒரு துணைத்தொகுப்பைத் தேர்ந்தெடுத்து இயல்புநிலைகளை (schedule, automerge, group name) மேலெழுதும் ஒரு Renovate config block; AI-குறிப்பிட்ட கொள்கை வாழும் இடம், எ.கா. "LLM SDKs-ஐ ஒருபோதும் auto-merge செய்யாதே."
  • Automerge — status checks தேர்ச்சி பெற்றதும் bot ஒரு PR-ஐ merge செய்ய அனுமதிக்கும் ஒரு Renovate அமைப்பு; dev-dependency patches போன்ற குறைந்த ஆபத்துள்ள புதுப்பிப்பு வகைகளுக்கு மட்டுமே ஒதுக்கப்பட்டது.

கருத்துகள்

மூன்று அடுக்கு pre-commit கட்டமைப்பு

ஒரு பயனுள்ள pre-commit config-இல் ஒரு கட்டமைப்பு அடுக்கு (whitespace, பெரிய கோப்புகள், YAML/JSON சரியான வடிவம்), ஒரு மொழி அடுக்கு (Python-க்கு Ruff, formatters), மற்றும் ஒரு AI-குறிப்பிட்ட அடுக்கு (prompt JSON schemas, JSONL row validators, secret detection) இருக்கும். தொடர்பில்லாத commits வேலையைத் தவிர்க்கும் வகையில் ஒவ்வொரு hook-ம் ஒரு files: regex-ஐ அறிவிக்கிறது. முழுக் கோப்பும் repo root-இல் commit செய்யப்படுகிறது, git hook-ஐ இணைக்க ஒவ்வொரு developer-ம் ஒரு முறை pre-commit install இயக்குகிறார் — ஒருங்கிணைக்கப்பட்ட கோப்பிற்கு Code Walkthrough பார்க்கவும்.

Hook ஓட்டம் மற்றும் மறு-staging

தோல்வியடைந்த hook ஒரு பிழையை மட்டும் அச்சிடுவதில்லை: தானாகத் திருத்தும் hooks (trailing whitespace, Ruff --fix) மாற்றப்பட்ட கோப்புகளை மறு-stage செய்கின்றன, இதனால் அடுத்த git add -u && git commit பொதுவாக மேலும் மனிதத் தலையீடு இல்லாமல் வெற்றி பெறுகிறது. இதுதான் hooks-ஐ எரிச்சலூட்டுவதாக இல்லாமல் பழக்கமாக்குகிறது.

Loading diagram...

AI codebases-க்கான Renovate package rules

Renovate-இன் இயல்புநிலைகள் ஒரு பொதுவான web app-ஐக் கருதுகின்றன. AI projects மூன்று இடங்களில் வேறுபடுகின்றன: (a) LLM SDK bumps ஒருபோதும் auto-merge ஆகக் கூடாது, ஏனெனில் ஒரு minor release tokenization-ஐயோ இயல்புநிலை sampling-ஐயோ மாற்றலாம் — அவற்றுக்கு முதலில் ஒரு evaluation suite இயக்கப்பட வேண்டும்; (b) queue-ஐ குறுகியதாக வைத்திருக்க dev-dependency patch/minor bumps தீவிரமாக auto-merge ஆக வேண்டும்; (c) ஒரே ஒரு security advisory ஒரே PR-இல் ஒவ்வொரு service-ஐயும் சென்றடையும் வகையில் Docker base image புதுப்பிப்புகள் குழுவாக்கப்பட வேண்டும். இதற்கான பொறிமுறை packageRules — Code Walkthrough பார்க்கவும்.

GitHub Actions-க்கான supply-chain pinning

uses: actions/checkout@v4 ஒரு நகரும் இலக்கு — சமரசம் செய்யப்பட்ட ஒரு tag உங்கள் build-ஐ தீங்கிழைக்கும் code-ஐ நோக்கி மறு-சுட்டுகிறது. Renovate-இன் pinDigests: true ஒவ்வொரு action குறிப்பையும் 40-எழுத்து commit SHA-ஆக மாற்றி, பதிப்பை ஒரு trailing comment-ஆக எழுதுகிறது, மேலும் உண்மையான releases-இல் SHA-ஐ தொடர்ந்து bump செய்கிறது.

Loading diagram...

Code Walkthrough

கீழே உள்ள இரண்டு கோப்புகளும் கருத்துகளில் விவரிக்கப்பட்ட மூன்று அடுக்கு hook config-ஐயும் package-rule கொள்கையையும் ஒருங்கிணைக்கின்றன. அவற்றை repo root-க்கு நகலெடுத்து, ஒரு முறை pre-commit install இயக்கி, repository-இல் Renovate-ஐ இயக்கவும்.

Code snippetyaml
1# .pre-commit-config.yaml 2repos: 3 - repo: https://github.com/pre-commit/pre-commit-hooks 4 rev: v4.6.0 5 hooks: 6 - id: trailing-whitespace 7 - id: end-of-file-fixer 8 - id: check-merge-conflict 9 - id: check-added-large-files 10 args: ['--maxkb=1024'] 11 - id: check-yaml 12 args: ['--unsafe'] 13 - id: check-json 14 15 - repo: https://github.com/astral-sh/ruff-pre-commit 16 rev: v0.5.7 17 hooks: 18 - id: ruff 19 args: ['--fix'] 20 - id: ruff-format 21 22 - repo: https://github.com/Yelp/detect-secrets 23 rev: v1.5.0 24 hooks: 25 - id: detect-secrets 26 args: ['--baseline', '.secrets.baseline'] 27 exclude: package-lock\.json|\.ipynb$ 28 29 - repo: local 30 hooks: 31 - id: prompt-json-schema 32 name: Validate prompt JSON files against schema 33 entry: python scripts/hooks/validate_prompt_schema.py 34 language: python 35 files: ^prompts/.*\.json$ 36 additional_dependencies: [pydantic>=2.7] 37 - id: jsonl-row-validate 38 name: Validate JSONL training data rows 39 entry: python scripts/hooks/validate_jsonl.py 40 language: python 41 files: ^data/training/.*\.jsonl$ 42 additional_dependencies: [pydantic>=2.7]

கட்டமைப்பு block (pre-commit-hooks) வழக்கமான குறைபாடுகளைப் பிடிக்கிறது, மேலும் — AI repos-க்கு முக்கியமாக — checkpoints நுழைந்துவிடாதபடி 1 MB-க்கு மேல் உள்ள commits-ஐ நிராகரிக்கிறது. check-yaml-இல் உள்ள --unsafe {{ .Values.foo }} போன்ற Helm templating-ஐ அனுமதிக்கிறது. Ruff block Black + isort + flake8 ஆகியவற்றை ஒரே Rust binary-ஆல் மாற்றுகிறது, எனவே PR diff சத்தமாக இருப்பதற்கு style ஒருபோதும் காரணமாக இருக்காது. detect-secrets staged கோப்புகளை அறியப்பட்ட false positives-ஐப் பதிவு செய்யும் .secrets.baseline-க்கு எதிராக scan செய்கிறது; package-lock.json மற்றும் .ipynb ஆகியவை அவற்றின் உயர்-entropy உள்ளடக்கம் detector-ஐத் தூண்டுவதால் விலக்கப்படுகின்றன. local block தான் AI-குறிப்பிட்ட அடுக்கு: prompt-json-schema prompts/ கீழ் உள்ள ஒவ்வொரு கோப்பையும் ஒரு Pydantic model-க்கு எதிராகச் சரிபார்க்கிறது, jsonl-row-validate ஒவ்வொரு training JSONL-இன் ஒவ்வொரு வரியையும் parse செய்து row schema-ஐ உறுதிப்படுத்துகிறது.

Code snippetjson
1{ 2 "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 "extends": ["config:recommended", ":semanticCommits"], 4 "schedule": ["after 7am every weekday"], 5 "timezone": "America/Los_Angeles", 6 "labels": ["dependencies"], 7 "prHourlyLimit": 4, 8 "prConcurrentLimit": 12, 9 "packageRules": [ 10 { 11 "description": "Never auto-merge AI SDK packages", 12 "matchPackagePatterns": ["^openai", "^anthropic", "^google-generativeai", "^langchain", "^llama-index"], 13 "automerge": false, 14 "labels": ["dependencies", "ai-sdk", "needs-evaluation"] 15 }, 16 { 17 "description": "Auto-merge dev-dependency patch + minor", 18 "matchDepTypes": ["devDependencies"], 19 "matchUpdateTypes": ["patch", "minor"], 20 "automerge": true, 21 "automergeType": "branch" 22 }, 23 { 24 "description": "Group Docker base image updates", 25 "matchDatasources": ["docker"], 26 "groupName": "docker base images" 27 }, 28 { 29 "description": "Pin GitHub Actions to commit SHA", 30 "matchDepTypes": ["action"], 31 "pinDigests": true 32 } 33 ] 34}

config:recommended Renovate-இன் தொகுக்கப்பட்ட baseline-ஐத் தேர்வு செய்கிறது; :semanticCommits PR தலைப்புகளை changelog generators-இல் சுத்தமாக parse ஆகச் செய்கிறது. வாரநாள் schedule-ம் இரண்டு limits-ம் bot-இன் சத்தத்தைக் கட்டுப்படுத்துகின்றன — அவை இல்லாவிட்டால் ஒரு புதிய repo ஐம்பது திறந்த PRs-உடன் விழித்தெழுகிறது, குழு bot-ஐப் புறக்கணிக்கக் கற்றுக்கொள்கிறது. நான்கு package rules AI-குறிப்பிட்ட கொள்கையைக் குறியாக்குகின்றன: SDK bumps needs-evaluation-ஐச் சுமந்து auto-merge-ஐ மறுக்கின்றன; dev-dependency patches GitHub-இன் branch protection வழியாக auto-merge ஆகின்றன; Docker base images குழுவாகின்றன; actions digests-க்கு pin ஆகின்றன.

இது வேலை செய்கிறது என்பதை நீங்கள் அறிவது: (a) ஒரு சுத்தமான checkout-இல் pre-commit run --all-files 0-உடன் வெளியேறும்போது, (b) ஒரு test branch-இல் நடப்பட்ட போலி secret hook-ஆல் நிராகரிக்கப்படும்போது, (c) Renovate-இன் onboarding PR merge செய்யப்பட்டிருக்கும்போது, மற்றும் (d) ஒரு openai bump needs-evaluation-உடன் திறந்து auto-merge-ஐ மறுக்கும்போது, அதே நேரத்தில் ஒரு devDependencies patch bump status checks தேர்ச்சி பெற்றதும் auto-merge ஆகும்போது.

-க்கான நடைமுறையில்

Code Walkthrough-ஐ அடிப்படையாகக் கொண்டு, அதே இரண்டு கோப்புகளும் அன்றாட துறை-குறிப்பிட்ட வேலையை நங்கூரமிடுகின்றன — மாறுவது எந்த hooks தங்கள் மதிப்பை நிரூபிக்கின்றன, எந்த Renovate rules அதிக traffic-ஐக் காண்கின்றன என்பது மட்டுமே.

செய்ய வேண்டியவை மற்றும் செய்யக் கூடாதவை

செய்ய வேண்டியவை

  1. CI-இல் pre-commit run --all-files இயக்கவும் — pre-commit install-ஐத் தவிர்த்த developers மீறும் commits-ஐ இன்னும் push செய்வார்கள்; CI படி PR நேரத்தில் விதிகளைத் தவிர்க்க முடியாததாக ஆக்குகிறது.
  2. GitHub Actions-ஐ commit SHA மூலம் pin செய்யவும் — tag hijacking ஒரு உண்மையான supply-chain தாக்குதல்; digest bumps-ஐ Renovate நிர்வகிக்க விடுங்கள், அப்போது pinning உங்களுக்கு எந்தச் செலவும் ஆகாது.
  3. secret detection-ஐ காலாண்டுக்கு ஒரு முறை மறு-baseline செய்யவும் — .secrets.baseline பதிவுகளைக் குவிக்கிறது; ஒரு பழைய baseline, பழைய false-positive வரியுடன் தற்செயலாகப் பொருந்தும் ஒரு உண்மையான leak-ஐ மறைக்கலாம்.

செய்யக் கூடாதவை

  1. model நடத்தையைத் தொடும் எதையும் auto-merge செய்யாதீர்கள் — LLM SDKs, tokenizers, prompt templates; minor bumps ஒரே இரவில் sampling இயல்புநிலைகளை மாற்றலாம், எனவே ஒரு evaluation run-ஐக் கட்டாயமாக்குங்கள்.
  2. Renovate queue இரண்டு பக்கங்களுக்கு மேல் வளர விடாதீர்கள் — அப்படி ஆகும்போது, குழு review செய்வதை நிறுத்திவிட்டது; schedule-ஐ இடைநிறுத்தி, queue-ஐ காலி செய்து, பின்னர் மீண்டும் தொடங்குங்கள்.
  3. custom hooks-இல் files: regex-ஐத் தவிர்க்காதீர்கள் — அது இல்லாமல், ஒவ்வொரு commit-ம் ஒவ்வொரு validator-ஐயும் இயக்குகிறது, அந்த latency வரி developers-ஐ --no-verify மூலம் hooks-ஐத் தவிர்க்கப் பழக்குகிறது.

3 hands-on labs come with this lesson — real code, in a cloud IDE. Create a free account to run them. No card.

Free account · no card · straight to the labs

Or get the full path — from

Listen to this lesson

Audio overviews of this lesson's labs and its chapter, from GenBodha Bytes.

More free lessons in DevOps Foundations for GenAI Engineers

All free lessons in LLMOps Engineering →