BazelCon 2022 מגיע בין 16 ל-17 בנובמבר לניו יורק באינטרנט.
הירשמו עוד היום!

כללים למאגר http

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

ניתן לטעון את הפונקציות הבאות מ-@bazel_tools//tools/build_defs/repo:http.bzl.

http://archive

http_archive(name, auth_patterns, build_file, build_file_content, canonical_id, integrity, netrc,
             patch_args, patch_cmds, patch_cmds_win, patch_tool, patches, remote_patch_strip,
             remote_patches, sha256, strip_prefix, type, url, urls, workspace_file,
             workspace_file_content)

מוריד מאגר של Bazel כקובץ ארכיון דחוס, דוחס אותו ומגדיר את היעדים שלו לקישור.

הוא תומך בקבצים הבאים: "zip", "jar", "war", "aar", "tar", "tar.gz", "tgz", "tar.xz", "txz", "tar.zst", "tzst", tar.bz2, "ar", או "deb".

דוגמאות: נניח שהמאגר הנוכחי מכיל את קוד המקור של תוכנית צ'אט, שנוסדה בספרייה ~/chat-app. עליה להיות תלויה בספריית SSL הזמינה בכתובת http://example.com/openssl.zip. קובץ .zip זה מכיל את מבנה הספרייה הבא:

  WORKSPACE
  src/
    openssl.cc
    openssl.h

במאגר המקומי, המשתמש יוצר קובץ openssl.BUILD שמכיל את הגדרת היעד הבאה:

  cc_library(
      name = "openssl-lib",
      srcs = ["src/openssl.cc"],
      hdrs = ["src/openssl.h"],
  )

יעדים במאגר ~/chat-app יכולים להיות תלויים ביעד הזה אם השורות הבאות יתווספו אל ~/chat-app/WORKSPACE:

  load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

  http_archive(
      name = "my_ssl",
      url = "http://example.com/openssl.zip",
      sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      build_file = "@//:openssl.BUILD",
  )

לאחר מכן היעדים יציינו @my_ssl//:openssl-lib בתור תלות.

מאפיינים

name שם; נדרש

שם ייחודי למאגר הזה.

auth_patterns מילון: מחרוזת -> מחרוזת; אופציונלי

סקריפט אופציונלי למיפוי שמות מארחים לדפוסי הרשאות מותאמים אישית. אם שם מארח של כתובת אתר קיים בהכתבה הזו, הערך ישמש כדפוס בעת יצירת כותרת ההרשאה לבקשת ה-http. כך ניתן להשתמש בסכימות הרשאה מותאמות אישית המשמשות בהרבה ספקי אחסון בענן. נכון לעכשיו, הדפוס תומך בשני אסימונים: <login> ו-<password>, שמוחלפים בערך המקביל שלהם בקובץ netrc עבור אותו שם מארח. לאחר העיצוב, התוצאה מוגדרת כערך של השדה Authorization בבקשת ה-HTTP. מאפיין ו-netrc לדוגמה עבור הורדת HTTP ל-API מסוג oauth2 באמצעות אסימון ספק:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
בקשת ה-HTTP הסופית תכלול את הכותרת הבאה:
Authorization: Bearer RANDOM-TOKEN

build_file תווית, אופציונלי

הקובץ לשימוש כקובץ BUILD עבור המאגר הזה.המאפיין הזה הוא תווית מוחלט (משתמשים ב-'@//' ל-repo הראשי). אין צורך לתת לקובץ את שם BUILD, אבל הוא יכול להיות מורכב (למשל, משהו כמו BUILD.new-repo-name כדי להבדיל בינו לבין קובצי ה-BUILD בפועל של המאגר. ניתן לציין את build_file או את build_file_content, אך לא את שניהם.

build_file_content מחרוזת; אופציונלי

התוכן של קובץ ה-BUILD עבור המאגר הזה. ניתן לציין את build_file או את build_file_content, אך לא את שניהם.

canonical_id מחרוזת; אופציונלי

מזהה קנוני של הארכיון שהורד. אם צוין, ולא ריק, ה-Bazel לא יעביר את הארכיון מהמטמון, אלא אם הוא נוסף למטמון על ידי בקשה עם אותו מזהה קנוני.

integrity מחרוזת; אופציונלי

סיכום הביקורת הצפוי בפורמט שלמות משאב המשנה של הקובץ שהורד. הקובץ הזה צריך להתאים לסיכום הביקורת של הקובץ שהורדת. _זה סיכון אבטחה בהשמטת סכום הביקורת מאחר שקבצים מרוחקים יכולים להשתנות._ לא חובה להקל על הפיתוח, אבל צריך להגדיר את המאפיין הזה או את 'sha256' לפני המשלוח.

netrc מחרוזת; אופציונלי

מיקום הקובץ netrc .לשימוש באימות

patch_args רשימת מחרוזות; אופציונלי

הארגומנטים הנתונים לכלי התיקון. ברירת המחדל היא -p0, אבל בדרך כלל יש צורך ב- -p1 לתיקונים שנוצרים על ידי Git. אם יצוינו כמה ארגומנטים מסוג -p, הארגומנט האחרון ייכנס לתוקף.אם הארגומנטים שאינם -p צוינו, Bazel תחזור להשתמש בכלי שורת הפקודה של התיקון במקום בהטמעה של Bazel מקורי. אם לא תציינו את כלי שורת הפקודה ואת מאפיין תיקוני_השגיאות, לא ייעשה שימוש ב-'patch'. פעולה זו משפיעה רק על קובצי תיקון במאפיין 'תיקונים'.

patch_cmds רשימת מחרוזות; אופציונלי

רצף של פקודות Bash שיחולו על Linux/Macos לאחר החלת התיקונים.

patch_cmds_win רשימת מחרוזות; אופציונלי

רצף של פקודות Powershell שיחולו ב-Windows לאחר החלת התיקונים. אם המאפיין הזה לא מוגדר, אל measurement_cmds יתבצע ב-Windows. כדי להשתמש בו יש לבצע קובץ בינארי של Bah.

patch_tool מחרוזת; אופציונלי

כלי השירות לתיקון(1). אם צוין, ב-Bazel ישתמשו בכלי התיקון שצוין במקום בהטמעת התיקון המקורי של Bazel.

patches רשימת התוויות; אופציונלי

רשימת קבצים שרוצים להחיל כתיקונים לאחר חילוץ הארכיון. כברירת מחדל, היא משתמשת בהטמעה של תיקון מקומי ב-Bazel שאינה תומכת בהתאמה חלקית ובתיקון בינארי. עם זאת, Bazel תחזור להשתמש בכלי של שורת הפקודה לתיקון אם המאפיין 'patch_tools' מצוין, או אם יש ארגומנטים שאינם '-p' במאפיין 'patch_args'.

remote_patch_strip מספר שלם; אופציונלי

מספר הקווים נטויים המובילים שיש להסיר משם הקובץ בתיקונים המרוחקים.

remote_patches מילון: מחרוזת -> מחרוזת; אופציונלי

מפה של כתובת ה-URL של קובץ התיקון לערך התקינות שלה, הם יוחלו לאחר חילוץ הארכיון ולפני החלת קובצי תיקון מהמאפיין 'תיקונים'. נעשה בו שימוש בהטמעת תיקון מקורי ב-Bazel, אפשר לציין את מספר רצועת התיקון באמצעות 'remote_patch_strip'.

sha256 מחרוזת; אופציונלי

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

strip_prefix מחרוזת; אופציונלי

קידומת ספרייה להסרת הקבצים שנשלפו. קובצי ארכיון רבים מכילים ספרייה ברמה עליונה שמכילה את כל הקבצים השימושיים בארכיון. במקום לציין את הקידומת הזו שוב ושוב ב-'build_file', תוכלו להשתמש בשדה הזה כדי להסיר אותו מכל הקבצים שחולצו. לדוגמה, נניח שאתה משתמש ב-'foo-lib-latest.zip', שמכיל את הספרייה 'foo-lib-1.2.3/' שבה יש קובץ 'WORKSPACE' ושיש בהן ספריות 'src/', 'lib/' ו-'test/' שמכילות את הקוד בפועל שברצונך ליצור. כדי להשתמש בספרייה של 'foo-lib-1.2.3' כספרייה ברמה העליונה, יש לציין `strip_prefix = "foo-lib-1.2.3" . לתשומת ליבך, אם יש קבצים מחוץ לספרייה הזו, הם לא יהיו נגישים ולא נגישים (למשל, קובץ רישיון ברמה עליונה). נכללים קבצים/ספריות שמתחילים בקידומת אבל לא נכללים בספרייה (למשל, `foo-lib-1.2.3.release-notes`). אם הקידומת שצוינה לא תואמת לספרייה בארכיון, Bazel תחזיר שגיאה.

type מחרוזת; אופציונלי

סוג הארכיון של הקובץ שהורדתם. כברירת מחדל, סוג הארכיון נקבע לפי סיומת הקובץ של כתובת האתר. אם אין לקובץ סיומת, אתם יכולים לציין במפורש אחד מהערכים הבאים: `"zip"`, `"tar"`, `"war"`, `"aar"`, `"`&’;`’t;``;`&r;’"`"`"`"`"`"`"`"`&rd;`&’s;``;‘`;`"`"`"`"`&rd;`"``t;"`"`"`"`"`"`&rd; &`(`;&`;t&z;``;&`;t&z;`&rd;``;& מסלולי;``; "```;" לתת מירכאות;``; & גרמני;` גרמני

url מחרוזת; אופציונלי

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

urls רשימת מחרוזות; אופציונלי

רשימה של כתובות URL של קובץ שיהיו זמינות ל-Bazel. כל רשומה חייבת להיות קובץ, http או https. מתבצע מעקב אחר מסלולים. האימות אינו נתמך. המערכת מנסה את כתובות ה-URL לפי הסדר עד שאחת מהן מצליחה, לכן צריך לרשום תחילה מראות מקומיות. אם כל ההורדות ייכשלו, הכלל ייכשל.

workspace_file תווית, אופציונלי

הקובץ לשימוש כקובץ `WORKSPACE` עבור המאגר הזה. ניתן לציין את `workspace_file` או את `workspace_file_content`, או את שניהם לא את שניהם.

workspace_file_content מחרוזת; אופציונלי

התוכן של קובץ WORKSPACE עבור המאגר הזה. ניתן לציין את `workspace_file` או את `workspace_file_content`, או את שניהם לא את שניהם.

http_file

http_file(name, auth_patterns, canonical_id, downloaded_file_path, executable, netrc, sha256, url,
          urls)

אפשר להוריד קובץ מכתובת URL ולהשתמש בו כקבוצת קבצים.

דוגמאות: נניח שיש לכם חבילת ניפוי באגים עבור הכללים המותאמים אישית שלכם. החבילה הזו זמינה בכתובת http://example.com/package.deb. אפשר להוסיף את הקובץ לקובץ WORKSPACE:

  load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")

  http_file(
      name = "my_deb",
      url = "http://example.com/package.deb",
      sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  )

היעדים יציינו את @my_deb//file בהתאם לתלויות בקובץ הזה.

מאפיינים

name שם; נדרש

שם ייחודי למאגר הזה.

auth_patterns מילון: מחרוזת -> מחרוזת; אופציונלי

סקריפט אופציונלי למיפוי שמות מארחים לדפוסי הרשאות מותאמים אישית. אם שם מארח של כתובת אתר קיים בהכתבה הזו, הערך ישמש כדפוס בעת יצירת כותרת ההרשאה לבקשת ה-http. כך ניתן להשתמש בסכימות הרשאה מותאמות אישית המשמשות בהרבה ספקי אחסון בענן. נכון לעכשיו, הדפוס תומך בשני אסימונים: <login> ו-<password>, שמוחלפים בערך המקביל שלהם בקובץ netrc עבור אותו שם מארח. לאחר העיצוב, התוצאה מוגדרת כערך של השדה Authorization בבקשת ה-HTTP. מאפיין ו-netrc לדוגמה עבור הורדת HTTP ל-API מסוג oauth2 באמצעות אסימון ספק:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
בקשת ה-HTTP הסופית תכלול את הכותרת הבאה:
Authorization: Bearer RANDOM-TOKEN

canonical_id מחרוזת; אופציונלי

מזהה קנוני של הארכיון שהורד. אם צוין, ולא ריק, ה-Bazel לא יעביר את הארכיון מהמטמון, אלא אם הוא נוסף למטמון על ידי בקשה עם אותו מזהה קנוני.

downloaded_file_path מחרוזת; אופציונלי

נתיב שהוקצה לקובץ שבהורדה

executable בוליאני; אופציונלי

אם הקובץ שהורדתם יהיה זמין להפעלה.

netrc מחרוזת; אופציונלי

מיקום הקובץ netrc .לשימוש באימות

sha256 מחרוזת; אופציונלי

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

url מחרוזת; אופציונלי

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

urls רשימת מחרוזות; אופציונלי

רשימה של כתובות URL של קובץ שיהיו זמינות ל-Bazel. כל רשומה חייבת להיות קובץ, http או https. מתבצע מעקב אחר מסלולים. האימות אינו נתמך. המערכת מנסה את כתובות ה-URL לפי הסדר עד שאחת מהן מצליחה, לכן צריך לרשום תחילה מראות מקומיות. אם כל ההורדות ייכשלו, הכלל ייכשל.

http_gar.

http_jar(name, auth_patterns, canonical_id, downloaded_file_name, netrc, sha256, url, urls)

מורידה צנצנת מכתובת URL והופכת אותה לזמינה בתור Java_Import

קבצים שהורדתם צריכים להיות עם סיומת מאגר.

לדוגמה: נניח שהמאגר הנוכחי מכיל את קוד המקור של תוכנית צ'אט, שבסיסו בספרייה ~/chat-app. עליה להיות תלויה בספריית SSL הזמינה ב- http://example.com/openssl-0.2.jar.

יעדים במאגר ~/chat-app יכולים להיות תלויים ביעד הזה אם השורות הבאות יתווספו אל ~/chat-app/WORKSPACE:

  load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_jar")

  http_jar(
      name = "my_ssl",
      url = "http://example.com/openssl-0.2.jar",
      sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  )

היעדים מציינים <code>@my_ssl//chromium</code> כתלוי תלוי בצנצנת הזו.

אפשר גם להפנות לקבצים במערכת הנוכחית (localhost) באמצעות "file:///path/to/file" אם אתם משתמשים במערכות מבוססות Unix. אם אתם משתמשים ב-Windows, השתמשו ב-"file:///c:/path/to/file". בכל שתי הדוגמאות, חשוב לשים לב לשלושת הקווים נטויים (/) – שני הקווים התחתונים הראשונים שייכים לכתובת file://, והשני השלישי שייך לנתיב המוחלט של הקובץ.

מאפיינים

name שם; נדרש

שם ייחודי למאגר הזה.

auth_patterns מילון: מחרוזת -> מחרוזת; אופציונלי

סקריפט אופציונלי למיפוי שמות מארחים לדפוסי הרשאות מותאמים אישית. אם שם מארח של כתובת אתר קיים בהכתבה הזו, הערך ישמש כדפוס בעת יצירת כותרת ההרשאה לבקשת ה-http. כך ניתן להשתמש בסכימות הרשאה מותאמות אישית המשמשות בהרבה ספקי אחסון בענן. נכון לעכשיו, הדפוס תומך בשני אסימונים: <login> ו-<password>, שמוחלפים בערך המקביל שלהם בקובץ netrc עבור אותו שם מארח. לאחר העיצוב, התוצאה מוגדרת כערך של השדה Authorization בבקשת ה-HTTP. מאפיין ו-netrc לדוגמה עבור הורדת HTTP ל-API מסוג oauth2 באמצעות אסימון ספק:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
בקשת ה-HTTP הסופית תכלול את הכותרת הבאה:
Authorization: Bearer RANDOM-TOKEN

canonical_id מחרוזת; אופציונלי

מזהה קנוני של הארכיון שהורד. אם צוין, ולא ריק, ה-Bazel לא יעביר את הארכיון מהמטמון, אלא אם הוא נוסף למטמון על ידי בקשה עם אותו מזהה קנוני.

downloaded_file_name מחרוזת; אופציונלי

שם הקובץ שהוקצה לצנצנת שהורדת

netrc מחרוזת; אופציונלי

מיקום הקובץ netrc .לשימוש באימות

sha256 מחרוזת; אופציונלי

הורדת SHA-256 הצפויה של הקובץ.

url מחרוזת; אופציונלי

כתובת URL של קובץ שתהיה זמינה ל-Bazel. הכתובת חייבת להיות קובץ, http או https. מתבצע מעקב אחר מסלולים. האימות אינו נתמך. ניתן להשיג גמישות רבה יותר על ידי הפרמטר של כתובות אתרים שמאפשר לציין כתובות אתרים חלופיות שיש לשלוף מהן. כתובת ה-URL חייבת להסתיים ב-'.tar`.

urls רשימת מחרוזות; אופציונלי

רשימה של כתובות URL של קובץ שיהיו זמינות ל-Bazel. כל רשומה חייבת להיות קובץ, http או https. מתבצע מעקב אחר מסלולים. האימות אינו נתמך. המערכת מנסה את כתובות ה-URL לפי הסדר עד שאחת מהן מצליחה, לכן צריך לרשום תחילה מראות מקומיות. אם כל ההורדות ייכשלו, הכלל ייכשל. כל כתובות ה-URL חייבות להסתיים ב-'.tar`.