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-ஐ எரிச்சலூட்டுவதாக இல்லாமல் பழக்கமாக்குகிறது.
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 செய்கிறது.
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-ஐக் காண்கின்றன என்பது மட்டுமே.
செய்ய வேண்டியவை மற்றும் செய்யக் கூடாதவை
செய்ய வேண்டியவை
- CI-இல்
pre-commit run --all-filesஇயக்கவும் —pre-commit install-ஐத் தவிர்த்த developers மீறும் commits-ஐ இன்னும் push செய்வார்கள்; CI படி PR நேரத்தில் விதிகளைத் தவிர்க்க முடியாததாக ஆக்குகிறது. - GitHub Actions-ஐ commit SHA மூலம் pin செய்யவும் — tag hijacking ஒரு உண்மையான supply-chain தாக்குதல்; digest bumps-ஐ Renovate நிர்வகிக்க விடுங்கள், அப்போது pinning உங்களுக்கு எந்தச் செலவும் ஆகாது.
- secret detection-ஐ காலாண்டுக்கு ஒரு முறை மறு-baseline செய்யவும் —
.secrets.baselineபதிவுகளைக் குவிக்கிறது; ஒரு பழைய baseline, பழைய false-positive வரியுடன் தற்செயலாகப் பொருந்தும் ஒரு உண்மையான leak-ஐ மறைக்கலாம்.
செய்யக் கூடாதவை
- model நடத்தையைத் தொடும் எதையும் auto-merge செய்யாதீர்கள் — LLM SDKs, tokenizers, prompt templates; minor bumps ஒரே இரவில் sampling இயல்புநிலைகளை மாற்றலாம், எனவே ஒரு evaluation run-ஐக் கட்டாயமாக்குங்கள்.
- Renovate queue இரண்டு பக்கங்களுக்கு மேல் வளர விடாதீர்கள் — அப்படி ஆகும்போது, குழு review செய்வதை நிறுத்திவிட்டது; schedule-ஐ இடைநிறுத்தி, queue-ஐ காலி செய்து, பின்னர் மீண்டும் தொடங்குங்கள்.
- 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.
- Configure pre-commit hooks for AI code qualityLab6 min
- Deploy Renovate on GKE for automated dependency PRsLab6 min
- Compare Renovate vs Dependabot for AI project dependenciesLab6 min
- Git Workflows for AI TeamsChapter overview22 min
More free lessons in DevOps Foundations for GenAI Engineers
- Ch 1Implement trunk-based development for AI projects
- Ch 1Implement pre-commit hooks and automated dependency updatesYou are here
- Ch 2Compare CI platforms: GitHub Actions vs Tekton vs Dagger
- Ch 2Configure CI to run on GKE self-hosted runners
- Ch 3Build optimized Docker images for AI applications
- Ch 3Automate image builds with GitHub Actions
- Ch 3Sign images with Cosign and enforce Binary Authorization on GKE