בדף הזה מוסבר איך להעביר נתונים בין שלבי בנייה. אם אתם חדשים ב-Cloud Build, כדאי קודם לקרוא את המדריך להתחלה מהירה של Build ואת סקירת תצורת Build.
Cloud Build מריץ את המשימות שלכם כסדרה של שלבי build, שמופעלים בסביבות מבודדות ובקונטיינרים. אחרי כל שלב, המאגר נמחק. כך אפשר להשתמש בכלים ובסביבות שונים לגמרי בכל שלב, ובאופן אוטומטי, נתונים שנוצרו בשלב אחד לא יכולים לזהם את השלב הבא. אבל לפעמים צריך לשמור את הסטטוס משלב אחד של בנייה כדי להשתמש בו בשלבים הבאים.
במקרים כאלה, Cloud Build מספק כרכים, שהם נתיבי קבצים עם הרשאות קריאה וכתיבה שאפשר לצרף לכל שלב build. התוכן של נפחי האחסון נשמר לאורך כל משך הבנייה. אתם יכולים להגדיר נפח משלכם או להשתמש בנפח ברירת המחדל ש-Cloud Build מספק לכם: /workspace. לפני שמריצים build, Cloud Build מחלץ את קוד המקור לתיקייה /workspace. כל מה שנכתב לנפחים מוגדרים על ידי המשתמש ול- /workspace בכל שלב יהיה זמין לשלבים הבאים.
העברת נתונים באמצעות סביבות עבודה
כדי להעביר נתונים בין שלבי בנייה, מאחסנים את הנכסים שנוצרו בשלב הבנייה ב-/workspace. הנכסים האלה יהיו זמינים לכל שלבי הבנייה הבאים.
בדוגמה הבאה של קובץ הגדרות build, בשלב הראשון של ה-build נשמר המחרוזת First Value ב-/workspace/first.txt והערך 2 ב-/workspace/second.txt. בשלב השני של הבנייה, המערכת קוראת ומדפיסה את הערכים ב-/workspace/first.txt וב-/workspace/second.txt.
YAML
steps:
- id: "Store Values"
name: ubuntu
entrypoint: bash
args:
- -c
- |
# Save a value to persistent volume mount: "/workspace"
echo "First Value" > /workspace/first.txt &&
# Save another
expr 1 + 1 > /workspace/second.txt
# In the next step, everything in the environment is discarded
# EXCEPT items in "/workspace"
- id: "Read Values"
name: ubuntu
entrypoint: bash
args:
- -c
- |
# Read from "/workspace"
echo "First we saved " $(cat /workspace/first.txt) &&
echo "Then we saved " $(cat /workspace/second.txt)
JSON
{
"steps": [
{
"id": "Store Values",
"name": "ubuntu",
"entrypoint": "bash",
"args": [
"-c",
"echo \"First Value\" > /workspace/first.txt &&\nexpr 1 + 1 > /workspace/second.txt\n"
]
},
{
"id": "Read Values",
"name": "ubuntu",
"entrypoint": "bash",
"args": [
"-c",
"echo \"First we saved \" $(cat /workspace/first.txt) &&\necho \"Then we saved \" $(cat /workspace/second.txt)\n"
]
}
]
}
העברת נתונים באמצעות נפחים שצוינו על ידי המשתמש
במקום להשתמש בנפח ברירת המחדל /workspace שסופק על ידי Cloud Build, אתם יכולים להגדיר נפח משלכם כדי לשמור נתונים בין שלבי בנייה.
כדי להגדיר ולהשתמש בעוצמת קול משלכם:
- בשלב הבנייה שבו רוצים לאחסן את הנתונים:
- מוסיפים בלוק
volumesומגדירים את השדות הבאים:-
name: מגדירים את הערך של השדה הזה לשם הנפח הרצוי. -
path: מגדירים את הערך של השדה הזה לנתיב הקובץ שבו רוצים לאחסן את הנתונים.
-
- הנתונים מאוחסנים בנתיב הקובץ שצוין ב-
path.
- מוסיפים בלוק
- בשלב הבנייה שבו רוצים להשתמש בנתונים:
- מוסיפים בלוק
volumesעם הערכים שלnameו-path. - צריכת הנתונים מנתיב הקובץ שצוין ב-
path.
- מוסיפים בלוק
בדוגמה הבאה של קובץ הגדרות build, בשלב הראשון של ה-build מוגדר נפח אחסון בשם myvolume והנתונים מאוחסנים ב-/persistent_volume/file. בשלב השני של הבנייה, הערך שמאוחסן ב-/persistent_volume/file מודפס.
YAML
steps:
- name: 'ubuntu'
entrypoint: 'bash'
args:
- '-c'
- |
echo "Hello, world!" > /persistent_volume/file
volumes:
- name: 'myvolume'
path: '/persistent_volume'
- name: 'ubuntu'
entrypoint: 'bash'
args:
- '-c'
- |
cat /persistent_volume/file
volumes:
- name: 'myvolume'
path: '/persistent_volume'
JSON
{
"steps": [
{
"name": "ubuntu",
"entrypoint": "bash",
"args": [
"-c",
"echo \"Hello, world!\" > /persistent_volume/file\n"
],
"volumes": [
{
"name": "myvolume",
"path": "/persistent_volume"
}
]
},
{
"name": "ubuntu",
"entrypoint": "bash",
"args": [
"-c",
"cat /persistent_volume/file\n"
],
"volumes": [
{
"name": "myvolume",
"path": "/persistent_volume"
}
]
}
]
}
המאמרים הבאים
- איך מתחילים בנייה באופן ידני
- איך יוצרים אוטומטית באמצעות טריגרים
- איך מריצים סקריפטים של bash בשלבי בנייה
- איך מגדירים את הסדר של שלבי הבנייה