Dependency Cache (ระบบบันทึกและกู้คืนแคช)
บันทึกและกู้คืนแคชของ dependency ระหว่างการรัน pipeline เพื่อเร่งความเร็ว
การอ้างอิง (Reference): loha/cache@v2
หมวดหมู่: Build (การสร้างอิมเมจและแคช)
รันไทม์ (Runtime): curlimages/curl:8.5.0 (รันแบบ non-root, ตรึงด้วย digest)
สัญญาอนุญาต (License): Apache-2.0
ควรใช้เมื่อ
ใช้ประกบหน้าหลังคำสั่งติดตั้ง (install) เพื่อลดระยะเวลาในการดาวน์โหลด dependency ซ้ำ โดยวางขั้นตอน restore ก่อนคำสั่ง install และวางขั้นตอน save หลังจาก install สำเร็จ
พารามิเตอร์
| พารามิเตอร์ | ชนิด | ค่าเริ่มต้น | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
ACTION | enum: restore, save | — | ใช่ | การทำงานกับ cache: restore เพื่อกู้คืนข้อมูลแคชเดิม หรือ save เพื่อบันทึกแคชใหม่ |
PATHS | string | — | ใช่ | รายการโฟลเดอร์หรือไฟล์ที่ต้องการบันทึกหรือกู้คืนจาก cache (คั่นด้วยจุลภาค) |
KEY_FILES | string | package-lock.json | ไม่ | รายการไฟล์ที่นำเนื้อหามาแฮช (hash) เพื่อสร้าง cache key (คั่นด้วยจุลภาค) |
CACHE_PREFIX | string | default | ไม่ | ข้อความ prefix นำหน้าเพื่อแยก cache ของแต่ละงานให้ไม่ปะปนกัน |
FAIL_ON_MISS | enum: true, false | false | ไม่ | กำหนดให้ task ล้มเหลวทันทีหากไม่พบแคชที่ตรงกันเมื่อสั่งกู้คืน (restore) |
WORKING_DIRECTORY | string | . | ไม่ | ไดเรกทอรีทำงานของ task โดยคิดเทียบจาก root ของ workspace |
พื้นที่ทำงาน (Workspaces)
source(จำเป็น): เชื่อมโยงจาก pipeline workspacesource
ผลลัพธ์ (Results)
| ผลลัพธ์ (Result) | คำอธิบาย |
|---|---|
CACHE_HIT | ค่าเป็น true เมื่อกู้คืนแคชสำเร็จ หรือ false หากไม่พบแคชหรือกำลังสั่งบันทึกแคช |
CACHE_KEY | คีย์ระบุแคชที่คำนวณได้จากผลการแฮชไฟล์ใน KEY_FILES |
การทำงาน
ระบบจะสร้าง cache key ขึ้นจาก CACHE_PREFIX รวมกับค่าแฮชของไฟล์ใน KEY_FILES หากไฟล์เหล่านี้มีการเปลี่ยนแปลง ค่า cache key จะเปลี่ยนไปและระบบจะสร้างแคชชุดใหม่ ทั้งนี้ระบบจะแยกพื้นที่แคชตาม repository และ branch: build จะพยายามอ่านแคชของ branch ตัวเองก่อน หากไม่พบจะค้นหาจาก default branch แต่การเขียนบันทึกแคชจะทำได้เฉพาะใน branch ของตนเองเท่านั้นเพื่อป้องกันการเขียนทับแคชของ branch อื่น