cargo adk build
अवलोकन
cargo adk build कमांड आपके ADK-Rust एजेंट प्रोजेक्ट को डिप्लॉय किए बिना कंपाइल करता है। यह आपके एजेंट के सही ढंग से कंपाइल होने की पुष्टि करने का एक तेज़ तरीका प्रदान करता है—पूर्ण डिप्लॉयमेंट चक्र शुरू करने से पहले डिपेंडेंसी संबंधी समस्याओं, प्रकार संबंधी त्रुटियों और कॉन्फ़िगरेशन समस्याओं का पता लगाकर।
स्थानीय विकास कार्यप्रवाह और CI पाइपलाइनों के हिस्से के रूप में cargo adk build का उपयोग करके परिवर्तनों को जल्दी मान्य करें, इसके लिए प्लेटफ़ॉर्म क्रेडेंशियल या नेटवर्क एक्सेस की आवश्यकता नहीं होती।
कमांड सिंटैक्स
cargo adk build [OPTIONS]
कमांड डिफ़ॉल्ट रूप से cargo build --release को रैप करता है और आपके एजेंट प्रोजेक्ट को लक्ष्य बनाता है। सफल होने पर, यह बिल्ड प्रोफ़ाइल, लक्ष्य डायरेक्टरी और बाइनरी आकार की रिपोर्ट करता है।
फ़्लैग और विकल्प
| फ़्लैग | विवरण | डिफ़ॉल्ट |
|---|---|---|
--manifest-path <PATH> | Cargo.toml फ़ाइल का पथ। प्रोजेक्ट निर्देशिका के बाहर से निर्माण करते समय उपयोगी। | वर्तमान निर्देशिका |
--debug | रिलीज़ के बजाय डीबग मोड में निर्माण करें। तेज़ संकलन, लेकिन अनुकूलित न की गई बाइनरी। | रिलीज़ मोड |
उदाहरण
# Build in release mode (default)
cargo adk build
# Build in debug mode for faster iteration
cargo adk build --debug
# Build a project at a specific path
cargo adk build --manifest-path /path/to/my-agent/Cargo.toml
निर्माण बनाम परिनियोजन
एजेंट विकास जीवनचक्र में cargo adk build और cargo adk deploy अलग-अलग उद्देश्यों की पूर्ति करते हैं:
| पहलू | cargo adk build | cargo adk deploy |
|---|---|---|
| उद्देश्य | कंपाइल और सत्यापित करना | कंपाइल, बंडल और प्लेटफ़ॉर्म पर पुश करना |
| नेटवर्क आवश्यक | नहीं | हाँ (प्लेटफ़ॉर्म सर्वर) |
| प्रमाणीकरण | कोई नहीं | टोकन आवश्यक (--token या ADK_DEPLOY_TOKEN) |
| आउटपुट | target/ में स्थानीय बाइनरी | प्लेटफ़ॉर्म पर अपलोड किया गया परिनियोजन बंडल |
| बिल्ड प्रोफ़ाइल | रिलीज़ (या --debug के साथ डिबग) | हमेशा रिलीज़ |
| सीक्रेट प्रबंधन | कोई नहीं | .env से सीक्रेट अपलोड करता है |
| मैनिफ़ेस्ट आवश्यक | केवल Cargo.toml | Cargo.toml + adk-deploy.toml |
| उपयोग का मामला | स्थानीय विकास, CI जाँच | उत्पादन परिनियोजन |
प्रत्येक का उपयोग कब करें
cargo adk build— संकलन सत्यापित करने के लिए विकास के दौरान, मर्ज से पहले गेट के रूप में CI पाइपलाइनों में, या यह जाँचने के लिए उपयोग करें कि निर्भरता अपडेट आपके एजेंट को प्रभावित नहीं करते।cargo adk deploy— जब आप अपने एजेंट को ADK प्लेटफ़ॉर्म पर भेजने के लिए तैयार हों, तब उपयोग करें। डिप्लॉय में आंतरिक रूप से एक बिल्ड चरण शामिल होता है (--skip-buildसे छोड़ा जा सकता है)।
उपयोग के उदाहरण
सफल बिल्ड
$ cargo adk build
Compiling adk-core v0.9.2
Compiling adk-agent v0.9.2
Compiling my-agent v0.1.0 (/home/user/my-agent)
Finished `release` profile [optimized] target(s) in 42.3s
✅ Build successful
profile: release
target: target/release
binary: target/release/my-agent (12.4 MB)
तेज़ पुनरावृत्ति के लिए डीबग बिल्ड
$ cargo adk build --debug
Compiling my-agent v0.1.0 (/home/user/my-agent)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.1s
✅ Build successful
profile: debug
target: target/debug
binary: target/debug/my-agent (45.2 MB)
CI पाइपलाइन एकीकरण
# .github/workflows/ci.yml
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- run: cargo install cargo-adk
- run: cargo adk build
त्रुटि परिदृश्य और समाधान
अनुपलब्ध निर्भरताएँ
लक्षण: अनसुलझी इम्पोर्ट त्रुटियों के कारण संकलन विफल हो जाता है।
error[E0432]: unresolved import `adk_tool`
--> src/main.rs:3:5
|
3 | use adk_tool::FunctionTool;
| ^^^^^^^^ use of undeclared crate or module `adk_tool`
समाधान: अपने Cargo.toml की निर्भरताओं में अनुपलब्ध क्रेट जोड़ें:
[dependencies]
adk-tool = { version = "2.1.0", features = ["mcp"] }
अमान्य प्रोजेक्ट संरचना
लक्षण: cargo adk build को Cargo.toml नहीं मिल रहा।
Error: failed to run cargo build: No such file or directory (os error 2)
समाधान: कमांड को अपने प्रोजेक्ट रूट से चलाएँ, या मेनिफेस्ट पथ निर्दिष्ट करें:
cargo adk build --manifest-path ./my-agent/Cargo.toml
फ़ीचर फ़्लैग विरोध
लक्षण: असंगत फ़ीचर संयोजनों के कारण बिल्ड विफल हो जाता है।
error: the package `my-agent` depends on `adk-realtime`, with features:
`openai-webrtc` but `openai-webrtc` is not a feature of `adk-realtime`
समाधान: जाँचें कि आपके फ़ीचर फ़्लैग आपके द्वारा उपयोग किए जा रहे ADK संस्करण के लिए उपलब्ध फ़ीचर्स से मेल खाते हैं। उपलब्ध फ़ीचर्स देखने के लिए cargo doc -p adk-realtime --open चलाएँ, या क्रेट दस्तावेज़ देखें।
पुरानी लॉक फ़ाइल
लक्षण: ADK क्रेट्स को अपग्रेड करने के बाद संस्करण समाधान त्रुटियाँ।
error: failed to select a version for the requirement `adk-core = "^0.9.2"`
समाधान: अपनी लॉक फ़ाइल अपडेट करें:
cargo update
cargo adk build
बिल्ड वातावरण संबंधी समस्याएँ
लक्षण: लिंकर त्रुटियाँ या अनुपलब्ध सिस्टम लाइब्रेरीज़।
error: linker `cc` not found
समाधान: अपने प्लेटफ़ॉर्म के लिए आवश्यक बिल्ड टूलचेन इंस्टॉल करें:
# Ubuntu/Debian
sudo apt install build-essential pkg-config libssl-dev
# macOS
xcode-select --install
# Fedora/RHEL
sudo dnf install gcc openssl-devel
संकलन के दौरान मेमोरी समाप्त होना
लक्षण: बिल्ड प्रक्रिया बंद हो जाती है या आवंटन विफलता के साथ पैनिक करती है।
समाधान: समानांतरता कम करें या अधिक RAM वाली मशीन का उपयोग करें:
# Limit parallel compilation jobs
CARGO_BUILD_JOBS=2 cargo adk build
# Or set in .cargo/config.toml
# [build]
# jobs = 2