สคริปต์รีโป
สคริปต์รีโปคือสคริปต์เชลล์ที่คุณกำหนดค่าแยกตามรีโป (การตั้งค่า → รีโพสิทอรี → ไอคอนเทอร์มินัลบนแถวของรีโป) ซึ่งเซิร์ฟเวอร์ของ Control Center รันกับ worktree ของสเปซ ของรีโปนั้น — เช็กเอาต์ที่แยกโดดใต้
<dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/ ซึ่งเอเจนต์ทำงานอยู่
มีสองชนิด:
| สคริปต์ | รันเมื่อไร | ใช้ทำอะไร |
|---|---|---|
| ตั้งค่า | ทันทีหลังจาก worktree ถูกจัดเตรียมให้สเปซ | ติดตั้งดีเพนเดนซี สร้างไฟล์ คัดลอก .env |
| เก็บถาวร | ก่อนที่ worktree จะถูกทำลายหรือถูกกวาดเก็บขยะ | ทำความสะอาดทรัพยากรนอก worktree (เครือข่าย docker, อุโมงค์, สถานะภายนอก) |
ตำแหน่งที่สคริปต์รัน
หัวข้อที่มีชื่อว่า “ตำแหน่งที่สคริปต์รัน”สคริปต์ทั้งสองรันผ่าน bash -lc (เชลล์ล็อกอิน เครื่องมือที่ติดตั้งผ่าน Homebrew/nvm จึงอยู่บน PATH) โดยมี worktree เป็นไดเรกทอรีทำงาน และตั้งค่าตัวแปรสภาพแวดล้อมเหล่านี้:
| ตัวแปร | ค่า |
|---|---|
CC_WORKSPACE_PATH |
worktree (cwd ของสคริปต์) |
CC_ROOT_PATH |
รีโปต้นทางที่ลงทะเบียนไว้ — เช็กเอาต์ของคุณเอง |
CC_SPACE_ID |
สเปซที่ worktree สังกัดอยู่ |
CC_SPACE_NAME |
ชื่อที่แสดงของสเปซ |
CC_REPO_NAME |
ชื่อที่แสดงของรีโป |
ตัวอย่าง สคริปต์ตั้งค่าที่ติดตั้งดีเพนเดนซีและนำ .env ที่ถูก gitignore ไว้ของรีโปเข้ามา:
pnpm installcp "$CC_ROOT_PATH/.env" .envpnpm run buildพฤติกรรมเมื่อล้มเหลว
หัวข้อที่มีชื่อว่า “พฤติกรรมเมื่อล้มเหลว”- สคริปต์ ตั้งค่า ที่จบด้วยรหัสออกที่ไม่ใช่ศูนย์ (หรือเกินเวลาหมดเวลา 5 นาที) ทำให้การจัดเตรียมสเปซล้มเหลว: สเปซจะแสดงสถานะล้มเหลวพร้อมปุ่มลองใหม่ และส่วนท้ายของเอาต์พุตของการรันจะถูกบันทึกไว้ การลองใหม่จะจัดเตรียมจาก worktree ที่สะอาดแล้วรันสคริปต์อีกครั้ง — เขียนสคริปต์ตั้งค่าให้การรันซ้ำหลังการติดตั้งที่ทำค้างไว้ยังทำงานได้ (ตัวจัดการแพ็กเกจมีพฤติกรรมเช่นนี้อยู่แล้ว)
- สคริปต์ เก็บถาวร เป็นแบบพยายามเต็มที่: ความล้มเหลว (หรือการหมดเวลา 2 นาที) จะถูกบันทึกไว้แต่ ไม่เคยกั้นการลบ สคริปต์เก็บถาวรรันบนเส้นทาง GC ที่ไม่มีใครตอบคำถามได้ (ลบสเปซ รวม PR แล้ว หรืองานทำความสะอาดตามกำหนดเวลา)
สคริปต์ตั้งค่ารันเฉพาะบน worktree ที่ใหม่เท่านั้น: การสั่งงานเอเจนต์ซ้ำเข้าไปในสเปซที่อุ่นอยู่จะใช้เช็กเอาต์เดิมและไม่ต้องจ่ายค่าติดตั้งซ้ำอีก
ประวัติการรัน
หัวข้อที่มีชื่อว่า “ประวัติการรัน”การรันทุกครั้งจะถูกบันทึกพร้อมสถานะ ระยะเวลา รหัสออก และส่วนท้ายของเอาต์พุตแบบจำกัดความยาว ซึ่งมองเห็นได้ในกล่องโต้ตอบการตั้งค่าเดียวกันใต้ “รันล่าสุด” (การสมัครรับ repos.watchScriptRuns จะสตรีมข้อมูลนี้แบบสด)
สคริปต์เป็นเชลล์ที่ เซิร์ฟเวอร์ เป็นผู้เรียกใช้ การเขียนสคริปต์จึงจำกัดไว้เฉพาะแอดมินเวิร์กสเปซ และถูกกั้นด้วยคลาสการกระทำ processSpawn — ตาข่ายกฎคุมชุดเดียวกับที่กั้นการดำเนินการสปอว์นโปรเซสอื่น ๆ ทุกอย่าง