העברת נתונים בין שלבי בנייה

בדף הזה מוסבר איך להעביר נתונים בין שלבי בנייה. אם אתם חדשים ב-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"
    }
    ]
  }
]
}

המאמרים הבאים