1. 📖 מבוא

ב-codelab הזה תלמדו את העקרונות הבסיסיים של Gemini CLI ותשתמשו בתוסף שלו לבדיקת קוד ולניתוח אבטחה בתהליך פיתוח התוכנה.
מה תלמדו
- איך מגדירים את Gemini CLI
- איך מגדירים את Gemini CLI
- איך מתקינים תוסף ל-Gemini CLI
- איך משתמשים בתוסף Gemini CLI לבדיקת קוד ולניתוח אבטחה
- איך מגדירים את MCP ל-Gemini CLI
- איך בודקים את Gemini CLI ב-CI/CD
מה תצטרכו
- דפדפן האינטרנט Chrome
- חשבון Gmail
- פרויקט ב-Cloud שמופעל בו חשבון לחיוב
2. 🚀 הכנה להגדרת סדנת פיתוח
שלב 1: בוחרים פרויקט פעיל ב-Cloud Console
במסוף Google Cloud, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud (ראו את הקטע הימני העליון במסוף).

לוחצים עליו ורואים רשימה של כל הפרויקטים, כמו בדוגמה הזו:

הערך שמסומן בתיבה האדומה הוא מזהה הפרויקט, והוא ישמש לאורך כל המדריך.
הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כדי לבדוק את זה, לוחצים על סמל ההמבורגר ☰ בסרגל הימני העליון כדי להציג את תפריט הניווט, ומחפשים את תפריט החיוב.


אם הכותרת Billing / Overview ( בפינה הימנית העליונה של מסוף Cloud ) מופיעה עם הכיתוב Google Cloud Platform Trial Billing Account, הפרויקט שלכם מוכן לשימוש במדריך הזה. אם לא, חוזרים לתחילת המדריך הזה ומממשים את תקופת הניסיון של חשבון החיוב

שלב 2: הכרת Cloud Shell
ברוב חלקי המדריכים תשתמשו ב-Cloud Shell. לוחצים על 'הפעלת Cloud Shell' בחלק העליון של מסוף Google Cloud. אם מוצגת בקשה לאישור, לוחצים על אישור.


אחרי שמתחברים ל-Cloud Shell, צריך לבדוק אם המעטפת ( או הטרמינל) כבר מאומתת בחשבון שלנו.
gcloud auth list
אם אתם רואים את כתובת Gmail האישית שלכם כמו בדוגמה שלמטה, הכול בסדר
Credentialed Accounts
ACTIVE: *
ACCOUNT: alvinprayuda@gmail.com
To set the active account, run:
$ gcloud config set account `ACCOUNT`
אם לא, כדאי לרענן את הדפדפן ולוודא שלוחצים על אישור כשמופיעה הבקשה ( יכול להיות שהתהליך יופסק בגלל בעיה בחיבור).
בשלב הבא, צריך גם לבדוק אם המעטפת כבר מוגדרת למזהה הפרויקט הנכון שיש לכם. אם מופיע ערך בתוך ( ) לפני הסמל $ במסוף ( בצילום המסך שלמטה, הערך הוא "your-workshop-project"), הערך הזה מציין את הפרויקט שהוגדר עבור סשן המעטפת הפעיל.

אם הערך שמוצג כבר נכון, אפשר לדלג על הפקודה הבאה. אבל אם הוא לא נכון או חסר, מריצים את הפקודה הבאה
gcloud config set project <YOUR_PROJECT_ID>
שלב 3: היכרות עם Cloud Shell Editor והגדרת ספריית העבודה של האפליקציה
עכשיו אפשר להגדיר את עורך הקוד כדי לבצע פעולות שקשורות לקוד. נשתמש ב-Cloud Shell Editor לצורך הזה
לוחצים על הלחצן Open Editor כדי לפתוח את Cloud Shell Editor
.
עכשיו יוצג הממשק של Cloud Shell Editor כמו שמוצג למטה

עכשיו משכפלים את מאגר ההדגמה שאיתו נבצע אינטראקציה. קודם צריך לפתוח את הטרמינל של העורך. כדי לעשות את זה, לוחצים על Terminal -> New Terminal בסרגל התפריטים , או משתמשים בקיצור הדרך Ctrl + Shift + C. חלון טרמינל ייפתח בחלק התחתון של הדפדפן.

מריצים את הפקודה הזו במסוף
git clone https://github.com/alphinside/gemini-cli-code-analysis-demo.git code-analysis-demo
אחר כך, עוברים לחלק העליון של Cloud Shell Editor ולוחצים על File->Open Folder (קובץ > פתיחת תיקייה), מאתרים את ספריית username (שם המשתמש) ואת ספריית המאגר המשוכפל code-analysis-demo, ואז לוחצים על הלחצן OK. הפעולה הזו תגדיר את הספרייה שנבחרה כספריית העבודה הראשית. בדוגמה הזו, שם המשתמש הוא alvinprayuda, ולכן נתיב הספרייה מוצג למטה


עכשיו ספריית העבודה ב-Cloud Shell Editor אמורה להיראות כך:

עכשיו אפשר לעבור לשלב הבא
3. 🚀 הגדרות ותצורות
כדי להתקין את Gemini CLI במערכת המקומית, אפשר לפעול לפי השלבים הבאים:
- מוודאים שבמערכת מותקנת Node מגרסה 20 ואילך
- כדי להפעיל את Gemini CLI:
- התקנה כחבילה גלובלית
# Install as an executor
npm install -g @google/gemini-cli
# then run it from terminal
gemini
- אפשר גם להריץ אותו ישירות מהמקור כדי לקבל תמיד את הגרסה העדכנית ביותר
npx https://github.com/google-gemini/gemini-cli
כשמריצים אותו בפעם הראשונה, הוא שואל כמה שאלות. אם מריצים את הפקודה מ-IDE (למשל VSCode), תופיע השאלה הבאה:

אחר כך יוצגו לכם כמה אפשרויות לאימות.

קיימות מספר אפשרויות:
- אם בוחרים באפשרות התחברות באמצעות חשבון Google, ייפתח דף אימות של Google בדפדפן, וצריך רק לאשר אותו.
- אם אתם מעדיפים להשתמש במפתח Gemini API, תצטרכו ליצור אותו בדף של AI Studio ואז ליצור קובץ .env בספריית העבודה עם המשתנה GEMINI_API_KEY מוגדר ( או להריץ את הפקודה
export GEMINI_API_KEY="your-api-key"בשורת הפקודה). - אם בחרתם להשתמש ב-Vertex AI, תצטרכו פרויקט כמו שהגדרתם קודם, ליצור קובץ .env ולהגדיר את GOOGLE_CLOUD_PROJECT ואת GOOGLE_CLOUD_LOCATION.
אם רוצים לשנות את שיטות האימות האלה, אפשר להריץ את הפקודה /auth מ-Gemini CLI או לערוך את קובץ ההגדרות. אם רוצים לערוך את קובץ ההגדרות ישירות, ב-Linux הוא אמור להיות בתיקייה $HOME/.gemini/settings.json . מזינים את security וauth ועורכים אותם.
{
"security": {
"auth": {
"selectedType": "vertex-ai" # or "gemini-api-key" or "oauth-personal"
}
}
}

4. 🚀 פקודות בסיסיות וכלים מובנים
עכשיו נתנסה ב-Gemini CLI כדי לקבל מידע נוסף עליו. אם אתם מחפשים פקודה בסיסית שאפשר להשתמש בה, אתם יכולים להקליד /help כדי להציג את כל הפקודות הזמינות.

/help
יוצג פלט כמו זה 
Gemini CLI הוא סוכן AI, ולכן יש לו כלים שמאפשרים לו לפתור את המשימה שהמשתמש נותן לו. כדי לראות את הכלים המובנים, מריצים את הפקודה /tools

/tools
יוצג פלט כמו זה:

אפשר לראות של-Gemini CLI יש כמה יכולות, כמו קריאה וכתיבה לקובץ, חיפוש באינטרנט ועוד. חלק מהכלים האלה דרשו אישור מהמשתמש כברירת מחדל בגלל הסיכון הפוטנציאלי
עכשיו נראה את זה בפעולה. נסו להריץ את ההנחיה הזו ב-Gemini CLI

Find top 10 OWASP security issue and write it down to owasp.md
אפשר לראות שהיא מפעילה את הכלי GoogleSearch ואחר כך כותבת את התוצאה באמצעות הכלי WriteFile. אם אתם משתמשים ב-IDE, ההצעה תוצג כהבדל בין הקוד המקורי לקוד המוצע, ותוכלו לבחור אם לקבל או לדחות אותה. כאן אפשר לראות ש-Gemini CLI מבקש הרשאה לכתוב את הקובץ

5. 🚀 תוספים
כדי לשפר את התוצאה של משימה ספציפית באמצעות סוכן AI, צריך לדעת איך ליצור הנחיה מתאימה, איך לנהל הנדסת הקשר באמצעות שילוב של כלים מתאימים וכן הלאה.
התוספים ל-Gemini CLI הם הנחיות ושילובים מוכנים מראש שקל להתקין, ואפשר לקשר אותם לכלים חיצוניים. כל תוסף מכיל 'מדריך' מובנה שמסביר איך להשתמש בכלים ביעילות, והוא יכול לכלול את הרכיבים הבאים:
- פקודות בהתאמה אישית
- הגדרות MCP
- קובצי הקשר

התקנת תוספי אבטחה
לדוגמה, במדריך הזה נסביר איך להתקין את התוספים code-review ו-security.
מריצים את הפקודה הבאה כדי להתקין את התוספים security מהטרמינל
gemini extensions install https://github.com/gemini-cli-extensions/security
יוצגו השאלות הבאות, פשוט מקישים על Enter כדי לאשר.
Installing extension "gemini-cli-security". **Extensions may introduce unexpected behavior. Ensure you have investigated the extension source and trust the author.** This extension will run the following MCP servers: * securityServer (local): node /home/alvinprayuda/.gemini/extensions/gemini-cli-security/mcp-server/dist/security.js This extension will append info to your gemini.md context using GEMINI.md Do you want to continue? [Y/n]: Extension "gemini-cli-security" installed successfully and enabled.
התקנת תוספים לבדיקת קוד
בשלב הבא, נתקין את התוסף code-review. מריצים את הפקודה הבאה
gemini extensions install https://github.com/gemini-cli-extensions/code-review
אחרי שמסיימים, מריצים שוב את Gemini CLI.
gemini
ואז מריצים את הפקודה /extensions, יופיעו 2 התוספים האלה שכבר מותקנים

/extensions
בסדר, עכשיו נבצע הפעלה מעשית במאגר לדוגמה ששיבטתם קודם.
6. 🚀 מצב אינטראקטיבי – אפליקציית תוסף לניתוח אבטחת קוד
תוסף האבטחה הוא תוסף Gemini CLI בקוד פתוח, שנועד לשפר את האבטחה של המאגר. התוסף מוסיף פקודה חדשה ל-Gemini CLI שמנתחת שינויים בקוד כדי לזהות מגוון סיכוני אבטחה ונקודות חולשה.
עכשיו נכין את מאגר ההדגמה שלנו. מריצים את הפקודה הבאה כדי לעבור לענף שבו השינויים עם סיכון האבטחה כבר הוחלו
git checkout refactor/analysis-demo
לאחר מכן מריצים את Gemini CLI במסוף
gemini
אז בואו נריץ את התוספים

/security:analyze
הפעולה הזו תתחיל תהליך ארוך, ובמהלך התהליך תקבלו כמה בקשות להפסקת התהליך כדי לבקש את ההרשאה שלכם להפעיל פעולה ספציפית, כמו mkdir שמוצג בהמשך

זהו מנגנון הגנה שנועד לוודא שהמשתמשים מודעים לפעולות שיבוצעו על ידי Gemini CLI. במהלך שאר ההדרכה, תמיד תוכלו לאפשר את הגישה ( אפשרות 2).
ההרחבה הזו תפעיל תהליך ארוך טווח. תוכלו לראות שהיא יוצרת קובץ תכנון בספרייה .gemini_security, ותוכלו לראות את רשימת המשימות כדי לדעת אילו תהליכים הסתיימו ואילו לא. כמו בדוגמה הבאה:

ייקח קצת זמן עד שהמשימות יסתיימו. בזמן הזה, אפשר לבדוק את המקור של התוספים האלה ב מאגר GitHub. כתובת ה-URL הזו מציגה את ההנחיה שמשמשת להפעלת כל תהליך סריקת האבטחה הזה

כפי שאפשר לראות, כדי לבצע את הסריקה הזו, ההנחיה היא להשתמש ב-Gemini CLI כדי לבצע בדיקה בשני שלבים: שלב הסיור ושלב הבדיקה המפורטת.
אם מופיעה ההודעה הבאה ב-Gemini CLI, אפשר לבחור באפשרות 2 כדי להשבית את זיהוי הלולאה.

אחר כך מזינים הנחיה ל-Gemini CLI כדי להמשיך

continue
זהו מנגנון שנועד למנוע לולאות אינסופיות של קריאות לא יעילות לכלים, והוא ימשיך להשתפר עם הזמן.
אחרי שהפעולה תסתיים, הדוח יוצג במסוף האינטראקטיבי. כדי להקל על התהליך, ננחה את Gemini CLI לכתוב אותו ב-security-analysis.md

write the result to security-analysis.md file
עכשיו אפשר לבדוק את התוצאה שנכתבה בקובץ
7. 🚀 מצב לא אינטראקטיבי – אפליקציית תוסף לבדיקת קוד
code-review התוסף מוסיף פקודה חדשה ל-Gemini CLI שמנתחת שינויים בקוד כדי לזהות מגוון בעיות באיכות הקוד.
אפשר להריץ את התוסף הזה במצב לא אינטראקטיבי של Gemini CLI, כלומר אפשר להריץ את כל התהליך בלי להיכנס למעטפת של Gemini CLI. כדי להריץ את Gemini CLI במצב לא אינטראקטיבי, אפשר להשתמש בתבנית הפקודה הבאה
gemini "put your command here"
עם זאת, חשוב לציין שכשמריצים במצב לא אינטראקטיבי, כל פעולה של כלי שדורשת הרשאת משתמש מושבתת. לכן, צריך להוסיף את הדגל --yolo כדי לאשר אוטומטית את כל הפעולות, כלומר להפעיל את כל הכלים במהלך המצב הלא אינטראקטיבי.
מריצים את התוסף code-review באמצעות הפקודה הבאה
gemini "/code-review" --yolo -e code-review > code-review.md
הפקודה הזו תכתוב את התוצאה של פלט Gemini CLI לקובץ code-review.md. שימו לב לדגל -e כאן. הדגל הזה קובע איזה תוסף יופעל במהלך הסשן. במקרה הזה, אנחנו מפעילים רק את התוסף code-review ומשביתים את השאר.
התהליך ייקח זמן, אבל בסיומו תוכלו לראות תוצאה דומה לזו שמוצגת למטה, שנכתבה בקובץ ה-Markdown
Here are the results of the code review.
While the recent changes to rename `get_products` and `get_product` to `GetProducts` and `GetProduct` are minor, the codebase has some inconsistencies in its naming conventions. For instance, other functions like `create_product` use `snake_case`, while the newly renamed functions use `PascalCase`. For better code quality and readability, I recommend using a consistent naming convention throughout the project.
More importantly, I have identified several security vulnerabilities in the `main.py` file. Here is a summary of the findings:
### 1. SQL Injection
* **Severity**: High
* **Location**:
* `main.py:99` in `get_products_by_category`
* `main.py:146` in `search_products`
* `main.py:372` in `get_user_transactions`
* `main.py:438` in `adjust_inventory_by_query`
* **Description**: The endpoints directly use f-strings to construct SQL queries, making them vulnerable to SQL injection attacks. An attacker could manipulate the input to execute arbitrary SQL commands, potentially leading to data breaches or unauthorized modifications.
* **Recommendation**: Use parameterized queries or an ORM to handle database interactions. This will ensure that user input is properly sanitized and prevent SQL injection attacks.
### 2. Server-Side Request Forgery (SSRF)
* **Severity**: High
* **Location**: `main.py:265` in `fetch_url`
* **Description**: The `fetch_url` endpoint allows users to specify an arbitrary URL, which the server then requests. This can be exploited to make requests to internal services or local files, leading to information disclosure or other security breaches.
* **Recommendation**: Implement a whitelist of allowed domains or protocols to restrict the URLs that can be requested. Additionally, you can disable redirects and use a timeout to limit the impact of an attack.
### 3. Information Exposure
* **Severity**: Medium
* **Location**: `main.py:423` in `get_environment_variables`
* **Description**: The `get_environment_variables` endpoint exposes all environment variables to the user. This can include sensitive information such as API keys, database credentials, and other secrets.
* **Recommendation**: Remove this endpoint or restrict access to it to authorized users. If you need to expose some environment variables, do so selectively and avoid exposing sensitive information.
8. 🚀 תמיכה בפרוטוקול הקשר של המודל
כפי שראינו בהסברים על התוסף, Gemini CLI יכול להתחבר לשרתי MCP – אפליקציות שמספקות כלים ומשאבים באמצעות Model Context Protocol. החיבור הזה מאפשר ל-Gemini CLI ליצור אינטראקציה עם מערכות חיצוניות ומקורות נתונים באמצעות שרתי MCP כגשרים לסביבה המקומית ולשירותים חיצוניים כמו ממשקי API.

אם אתם רוצים להגדיר בעצמכם שרת MCP, אתם צריכים לשנות את קובץ .gemini/settings.json ולהוסיף את ההגדרות הבאות :
{
...
# Previous settings above if any
"mcpServers": {
"server_name": {
# MCP server configurations here
}
}
}
במדריך הזה נגדיר חיבור לחשבון GitHub כדי לדחוף את נתוני הדוח הקודמים ל-GitHub
הגדרת שרת Github MCP
קודם ניצור את קובץ התצורה של פרויקט Gemini CLI. מריצים את הפקודה הבאה
mkdir -p .gemini && touch .gemini/settings.json
אחר כך פותחים את הקובץ .gemini/settings.json וממלאים אותו בהגדרות הבאות
{
"mcpServers": {
"github": {
"httpUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "your-personal-access-token"
},
"timeout": 5000
}
}
}
עכשיו נצטרך את אסימון הגישה האישי שלכם ב-GitHub, לכן חשוב לוודא שכבר יש לכם חשבון ב-GitHub.
מתחברים ל-Github ועוברים אל Settings (הגדרות).

אחרי זה, גוללים למטה כדי למצוא את הגדרות המפתחים ולוחצים עליהן.

ואז בוחרים באפשרות Personal access tokens (אסימוני גישה אישיים) ובוחרים באפשרות Tokens (classic) (אסימונים (קלאסי)).


מזינים כאן את השם של אסימון הגישה האישי ומסמנים את תיבות הסימון של ההיקפים repo.

אחר כך גוללים למטה ולוחצים על הלחצן Generate Token (יצירת אסימון).
לוחצים על הלחצן ליצירת טוקן חדש ובוחרים באפשרות יצירת טוקן חדש (קלאסי). אחרי זה מעתיקים את הטוקן שנוצר וכותבים אותו בקובץ .gemini/settings.json

לכן, הקובץ .gemini/settings.json צריך להיראות כמו בדוגמה הבאה
{
"mcpServers": {
"github": {
"httpUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "ghp-xxxx"
},
"timeout": 5000
}
}
}
עכשיו נאמת את החיבור. מריצים את הפקודה הבאה כדי להיכנס ל-Gemini CLI
gemini
לאחר מכן, מריצים את הפקודה /mcp. אמורה להופיע הודעה ש-Github MCP כבר מוגדר בצורה תקינה.

/mcp
אחר כך נבדוק את החיבור של MCP על ידי שליחת הפקודה הזו

Aggregate the findings from @code-review.md and @security-analysis.md into a single report and ensure no duplicates issues reported. Post this report as a comment on the relevant pull request for the current git branch on GitHub and display the pull request URL for manual review
שימו לב לסימון @code-review.md ו-@security-analysis.md כאן. כך אנחנו מתייחסים לקבצים שיועברו ל-Gemini CLI. הפקודה הזו תקרא את התוכן של שני הקבצים ותוסיף תגובה לבקשת משיכת השינויים שקשורה לענף הזה באמצעות חיבור ה-MCP של GitHub. אחרי כן תוכלו לבדוק את כתובת ה-URL של בקשת המיזוג כדי לאמת את הפעולה.

9. 💡Gemini CLI בתהליך עבודה של CI/CD
אם אתם משתמשים ב-GitHub, אתם יכולים להטמיע בקלות את Gemini CLI בצינור ה-CI/CD שלכם באמצעות run-gemini-cliGithub Action. הוא פועל גם כסוכן אוטונומי למשימות קריטיות של כתיבת קוד שגרתיות, וגם כשותף שאפשר להקצות לו עבודה במהירות לפי דרישה
אתם יכולים להשתמש בו כדי לבצע בדיקות של בקשות משיכה, לתעדף בעיות, לבצע ניתוח ושינוי של קוד ועוד, באמצעות שיחה עם Gemini ישירות במאגרי GitHub.
אפשר לבדוק את הדוגמה לשילוב הזה בבקשת המיזוג הזו, שבה אנחנו משתמשים בתוסף האבטחה של Gemini CLI בתוך הרצת התהליך ומספקים את הביקורות כשבקשת המיזוג נוצרת.




10. 💡כדאי להתנסות בתוספים אחרים ל-Gemini CLI

אפשר גם לעיין בתוספים נוספים בכתובת https://geminicli.com/extensions . כדאי לעיין בו כדי לראות עוד כלים מעניינים.
11. 🧹 ניקוי
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם ב-Code Lab הזה:
- במסוף Google Cloud, עוברים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.