ป้ายกำกับ: Bat

SVN Multi-Repo Automation Scripts (การเขียน Script/Batch เพื่อ Checkout, Update และ Check Status ทุก Sub-folder)SVN Multi-Repo Automation Scripts (การเขียน Script/Batch เพื่อ Checkout, Update และ Check Status ทุก Sub-folder)

ในโลกของการพัฒนาซอฟต์แวร์สมัยใหม่ โครงการขนาดใหญ่มักไม่ได้ถูกเก็บไว้ในที่เดียว แต่จะแตกออกเป็นส่วนย่อยๆ หรือ Microservices ที่ต้องพึ่งพาอาศัยกันหลายสิบตัว การจัดการโค้ดเบส (Codebase) จำนวนมากที่กระจายอยู่ในระบบควบคุมเวอร์ชันอย่าง SVN จึงกลายเป็นความท้าทายด้านปฏิบัติการที่สำคัญ ความผิดพลาดจากการทำด้วยมือเพียงครั้งเดียวอาจส่งผลกระทบต่อทั้ง Pipeline ได้ ดังนั้น การสร้างชุดคำสั่งอัตโนมัติจึงเป็นหัวใจสำคัญของการทำงานแบบ DevOps ที่มีประสิทธิภาพ




เจาะลึกรายละเอียดและประเด็นสำคัญ

หัวใจของการทำ Automation Scripts สำหรับ Multi-Repo คือการทำให้กระบวนการที่เคยต้องใช้เวลาหลายชั่วโมงในการกดปุ่มหรือรันคำสั่งทีละบรรทัด กลายเป็นชุดคำสั่งที่ทำงานได้อย่างแม่นยำและสามารถเรียกใช้งานซ้ำได้ (Idempotent) โดยเราจะต้องครอบคลุม 3 ฟังก์ชันหลัก: การ Checkout โค้ดครั้งแรก, การ Update เพื่อดึงการเปลี่ยนแปลงล่าสุด, และการ Check Status เพื่อตรวจสอบว่ามีไฟล์ใดถูกแก้ไขหรือเพิ่มเข้ามาหรือไม่

แนวคิดในการเขียน Script คือการใช้ Loop Structure (เช่น `for` loop) ร่วมกับการจัดการ Error Handling ที่ดีเยี่ยม เมื่อเรากำหนดรายการ Sub-folder หรือ Repository ทั้งหมดไว้ใน Array แล้ว สคริปต์จะวนลูปเข้าไปดำเนินการคำสั่ง SVN ภายในแต่ละโฟลเดอร์อย่างเป็นระบบ ทำให้มั่นใจได้ว่าทุกส่วนของโปรเจกต์ได้รับการซิงค์ข้อมูลล่าสุดก่อนเริ่ม Build เสมอ

#!/bin/bash

# รายการ Sub-folders หรือ Repositories ที่ต้องจัดการ
REPOS=(
“project_core/auth_module”
“project_core/api_gateway”
“project_core/user_service”
)

for REPO in “${REPOS[@]}”; do
echo “==========================================”
echo “Processing Repository: $REPO”
# 1. Checkout (ถ้ายังไม่มีโฟลเดอร์)
if [ ! -d “$REPO/.svn” ]; then
echo “-> Performing initial checkout…”
svn checkout svn://your-repo/path/$REPO .
else
# 2. Update เพื่อดึงการเปลี่ยนแปลงล่าสุด
echo “-> Running ‘svn update’ to sync changes…”
svn update “$REPO” || { echo “ERROR: Failed to update $REPO”; exit 1; }

# 3. Check Status เพื่อตรวจสอบไฟล์ที่ถูกแก้ไข/เพิ่ม
echo “-> Checking status for pending changes…”
svn status “$REPO”
fi
done

echo “==========================================”
echo “All repositories processed successfully.”




การนำไปประยุกต์ใช้ในชีวิตและการทำงานยุคใหม่

  • CI/CD Pipeline Integration (Jenkins, GitLab CI):การนำสคริปต์นี้ไปเป็นขั้นตอนแรกสุดใน Pipeline เพื่อให้แน่ใจว่าโค้ดที่ใช้ในการ Build นั้นเป็นเวอร์ชันล่าสุดและสมบูรณ์ที่สุดก่อนที่จะเริ่ม Compile หรือ Run Test ใดๆ
  • Environment Synchronization (Dev/QA):ใช้สคริปต์นี้ในการเตรียมสภาพแวดล้อมการทดสอบ เมื่อมีการ Merge โค้ดใหม่เข้าสู่ Branch หลัก ทำให้มั่นใจว่าทุก Sub-module ได้รับโค้ดที่อัปเดตพร้อมกันก่อนส่งมอบให้ QA

การลงทุนเวลาในการเขียนและทดสอบ Automation Script เหล่านี้ ไม่ใช่แค่การประหยัดแรงงาน แต่คือการยกระดับความน่าเชื่อถือ (Reliability) ของระบบทั้งหมด เมื่อเราสามารถทำให้กระบวนการที่ซับซ้อนกลายเป็นคำสั่งเดียวได้ เราก็กำลังก้าวข้ามจากยุคของการทำงานแบบ Manual ไปสู่ Operational Excellence อย่างแท้จริง


อ่านเพิ่มเติม