דף זה מיועד לבעלים ולתחזוקה של מאגרי כללים של Bazel. הוא מתאר כיצד להגדיר את המערכת של Bazel Continuous Integration (CI) כדי שהמאגר שלך יבחן את הכללים שלך כדי לוודא שהם תואמים לתרחיש ביצוע מרחוק. ההוראות בדף הזה רלוונטיות לפרויקטים המאוחסנים במאגרים של GitHub.
דרישות מוקדמות
לפני ביצוע השלבים בדף זה, ודאו כי:
- מאגר GitHub שלך הוא חלק מארגון Bazel GitHub.
- הגדרת את Buildkite עבור המאגר שלך, כמתואר בדף Bazel Continuous Integration.
הגדרת CI של Bazel לבדיקה
בקובץ
.bazelci/presubmit.yml
צריך לבצע את הפעולות הבאות:א. הוספה של הגדרה בשם
rbe_ubuntu1604
ב. בתצורה של
rbe_ubuntu1604
, יש להוסיף את גרסאות ה-build והבדיקה שרוצים לבדוק ביחס להפעלה מרחוק.מוסיפים את מאגר הנתונים של
bazel-toolchains
GitHub לקובץWORKSPACE
, שמוצמד לגרסה האחרונה. כמו כן, יש להוסיף יעדrbe_autoconfig
בשםbuildkite_config
. דוגמה זו יוצרת תצורת Toolchain לביצוע מרחוק באמצעות CI BuildKite CI עבורrbe_ubuntu1604
.
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
rbe_autoconfig(name = "buildkite_config")
עליך לשלוח בקשת משיכה עם השינויים שלך לקובץ
presubmit.yml
. (ראו דוגמה לבקשת משיכה).כדי להציג את תוצאות גרסת ה-build, לוחצים על פרטים עבור בדיקת ה-RBE (Ubuntu 16.04) לצורך בדיקת משיכה ב-GitHub, כפי שמוצג באיור למטה. הקישור הזה הופך לזמין אחרי שבקשת המשיכה ממוזגת והרצת בדיקות CI. (ראו תוצאות לדוגמה).
(אופציונלי) מגדירים את הבדיקה של Bazel (RBE (Ubuntu 16.04) כבדיקה נדרשת לפני המיזוג בכלל ההגנה על הסניף. ההגדרה נמצאת ב-GitHub בהגדרות ו-gt; סניפים > כללי הגנה על סניפים, כפי שמוצג באיור הבא.
פתרון בעיות build ובדיקות שנכשלו
אם ה-build או הבדיקות נכשלים, סביר להניח שהסיבה לכך היא:
כלי הבנייה או הבדיקה הנדרשים לא מותקנים במאגר ברירת המחדל. גרסאות build באמצעות ההגדרה
rbe_ubuntu1604
מופעלות כברירת מחדל בתוך מאגר תגים שלrbe-ubuntu16-04
, שכולל כלים המשותפים לגרסאות build רבות של Bazel. עם זאת, אם הכללים מחייבים כלים שאינם קיימים במאגר התגים המוגדר כברירת מחדל, עליך ליצור מאגר מותאם אישית על סמךrbe-ubuntu16-04
מאגר התגים ולכלול את הכלים המתוארים בהמשך.יעדי בנייה או בדיקה מתבססים על כללים שאינם תואמים לביצוע מרחוק. לפרטים על תאימות של ביצוע מרחוק, ראו התאמה של כללי Bazel לביצוע מרחוק.
שימוש במאגר מותאם אישית בהגדרת rbe_ubuntu1604 CI
המאגר rbe-ubuntu16-04
זמין לציבור בכתובת ה-URL הבאה:
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
אפשר לשלוף אותו ישירות מרשם מאגרי הכלים או ליצור אותו מהמקור. הקטעים הבאים מתארים את שתי האפשרויות.
לפני שמתחילים, חשוב לוודא שהתקנתם את gcloud
, את docker
ואת git
.
אם אתם בונים את המאגר ממקור, עליכם להתקין גם את הגרסה האחרונה של Bazel.
משיכת ה-rbe-ubuntu16-04 מרישום מאגרי התגים
כדי לשלוף את מאגר התגים rbe-ubuntu16-04
מהרישום של מאגר התגים, מריצים את הפקודה הבאה:
gcloud docker -- pull gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
מחליפים את sha256-checksumבערך סכום הביקורת של SHA256 במאגר העדכני.
בניית מאגר מאגר של rbe-ubuntu16-04 ממקור
כדי ליצור מאגר rbe-ubuntu16-04
מהמקור, יש לבצע את הפעולות הבאות:
שכפול המאגר של
bazel-toolchains
:git clone https://github.com/bazelbuild/bazel-toolchains
מגדירים יעדים של מאגר תגים ב-toolschain ויוצרים את המאגר לפי ההוראות במאגרים של Toolchain.
מושכים את הקונטיינר החדש:
gcloud docker -- pull gcr.io/project-id/custom-container-namesha256-checksum
המערכת מפעילה את מאגר התגים המותאם אישית
כדי להפעיל את מאגר התגים המותאם אישית, מבצעים את אחת מהפעולות הבאות:
אם שלפתם את מאגר התגים ממאגר התגים, הפעילו את הפקודה הבאה:
docker run -it gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum/bin/bash
מחליפים את
sha256-checksum
בערך סכום הביקורת SHA256 במאגר העדכני.אם יצרתם את מאגר התגים מהמקור, מריצים את הפקודה הבאה:
docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
המערכת מוסיפה משאבים למאגר המותאם אישית
צריך להשתמש ב-Dockerfile
או ב-
rules_docker
כדי להוסיף משאבים או
גרסאות חלופיות של המשאבים המקוריים למאגר rbe-ubuntu16-04
.
אם זו הפעם הראשונה שאתם משתמשים ב-Docker, עליכם לקרוא את המידע הבא:
לדוגמה, קטע הקוד הבא של Dockerfile
להתקנת my_tool_package
:
FROM gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
RUN apt-get update && yes | apt-get install -y my_tool_package
דחיפת הקונטיינר המותאם אישית אל מאגר המאגרים
לאחר התאמה אישית של הקונטיינר, צריך לבנות את תמונה של המאגר ולדחוף אותה אל רישומים של מאגר תגים באופן הבא:
יצירת תמונה של מאגר:
docker build -t custom-container-name.
docker tag custom-container-name gcr.io/project-id/custom-container-name
דוחפים את תמונת המאגר אל רישום מאגרי התגים:
gcloud docker -- push gcr.io/project-id/custom-container-name
יש לעבור לכתובת ה-URL הבאה כדי לוודא שהמאגר נשלח:
https://console.cloud.google.com/gcr/images/project-id/GLOBAL/custom-container-name
חשוב לשים לב לסיכום SHA256 של המאגר המותאם אישית. יהיה עליך לספק אותו מאוחר יותר בהגדרת הפלטפורמה של Build.
מגדירים את מאגר התגים לגישה ציבורית, כפי שמתואר בגישה ציבורית, כפי שמוסבר בהצגת תמונות באופן גלוי לכול.
למידע נוסף, עיינו במאמר דחיפה ומשיכת תמונות.
ציון ההגדרה של פלטפורמת ה-build
עליך לכלול תצורת Bazel בהגדרת התצורה האישית של הכלי, כך ש-Bazel בוחרת ערכת כלים המתאימה לפלטפורמת החומרה/תוכנה הרצויה. כדי ליצור
פלטפורמה חוקית באופן אוטומטי, ניתן להוסיף אל WORKSPACE
יעד של rbe_autoconfig
עם השם buildkite_config
הכולל מאפיינים נוספים לבחירת מאגר התגים המותאם אישית שלך. לפרטים על ההגדרה הזו, מומלץ לקרוא את התיעוד העדכני של rbe_autoconfig
.