Deployment Hooks

Hook (หรือ webhook) เป็นขั้นตอนการแทรกโค้ดในการดำเนินการมาตรฐานเพื่อใช้การปรับแต่งบางอย่าง ในขอบเขตของ Ruk-Com Cloud Platform ฟังก์ชันนี้อนุญาตให้คุณดำเนินการรันสคริปต์ที่กำหนดเองก่อน และ/หรือ หลังการดำเนินการ deploy แอปพลิเคชัน นอกจากนั้นสำหรับ Marven build node และ Golang แอปพลิเคชันเซิร์ฟเวอร์สามารถตั้งค่า build hooks เพิ่มเติมได้ทั้งก่อนและหลังโปรเจ็กต์

ดังนั้นด้านล่างนี้ เราจะทดสอบวิธีการใช้งาน hooks ที่ Ruk-Com Cloud และภาพรวมกรณีการใช้งานทั่วไปพร้อมทั้งคำแนะนำทีละขั้นตอน โดยฟังก์ชันนี้มีประโยชน์สำหรับ:

การจัดการ Hooks

เป็นส่วนหนึ่งของกระบวนการปรับใช้ Hooks อยู่ที่ส่วนขยายของแบบฟอร์มแดชบอร์ดที่เหมาะสม ดังนั้นการจัดการ hooks ให้เข้าถึงการโต้ตอบการ deploy แอปพลิเคชันโดยใช้ตัวเลือกต่อไปนี้:

  • Deployment Manager
  • ปุ่ม Deploy สำหรับแอปพลิเคชันเซิร์ฟเวอร์

1. ภายในเฟรมที่เปิดอยู่ เลือกประเภทของ source ที่ต้องการ deploy และกดขยายส่วน Hooks

ในที่นี้ให้คลิกปุ่ม Pre หรือ Post ที่จัดเตรียมไว้สำหรับโค้ดของคุณ ซึ่งจะดำเนินการตามลำดับก่อน/ทันทีหลังจากการ deploy (ตามตัวเลือกที่เลือก)

2. ป้อนโค้ดที่ต้องการภายในหน้าต่าง Edit Hook ที่เปิดอยู่โดยคุณสามารถใช้ภาษาในการเขียนโปรแกรมใดก็ได้ที่ต้องการ – เพียงตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งโค้ดที่เหมาะสมสำหรับคอนเทนเนอร์เป้าหมายแล้ว (ติดตั้งเบื้องต้นด้วยตัวเองหรือรวมอยู่ในการสร้างสแต็กเริ่มต้น)

  • เคล็ดลับ: ภายในหน้าต่างด้านบน คุณสามารถเข้าถึงเครื่องมือต่อไปนี้เพื่อช่วยคุณในระหว่างการแก้โค้ด
    • Wrap lines – เบรกข้อความเพื่อดำเนินการต่อในบรรทัดด้านล่างหากถึงขอบเฟรม
    • Search – ช่วยในการค้นหาข้อมูลที่คุณต้องการได้อย่างง่ายดาย อีกทั้งมาพร้อมกับ Match case และตัวเลือกการค้นหา Regex เพิ่มเติม
    • Help – เปลี่ยนเส้นทางไปยังเอกสารปัจจุบันเพื่อรับรายละเอียดเกี่ยวกับการใช้ hooks ที่เหมาะสม

คลิก Apply เมื่อพร้อม ตอนนี้คุณสามารถ deploy แอปพลิเคชันของคุณแล้ว

3. หลังจาก deploy สำเร็จคุณสามารถคลิกปุ่ม Show logs ภายในการแจ้งเตือนแดชบอร์ดที่ปรากฏขึ้นเพื่อดูการตอบสนองโดยละเอียดเกี่ยวกับการดำเนินการ:

หมายเหตุ: ในกรณีที่เกิดข้อผิดพลาดขึ้นระหว่างการดำเนินการ hook คุณจะได้รับการแจ้งเตือนที่เหมาะสมในขณะที่การ deploy จะถูกยกเลิก:



คลิกที่ปุ่ม Show Logs เพื่อรับรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดที่เกิดขึ้นโดยดู log ของการดำเนินการ deploy (ซึ่งสอดคล้องกับไฟล์ hooks.log โดยสามารถเข้าถึงได้ผ่านส่วน logs สำหรับเซิร์ฟเวอร์ที่เหมาะสม)

Hooks Use Cases

Hooks มอบโอกาสที่หลากหลายสำหรับนักพัฒนา ทำให้กระบวนการที่ใช้เป็นประจำส่วนใหญ่เป็นไปโดยอัตโนมัติเพื่อให้ได้แอปพลิเคชันที่พร้อมใช้งานหลังจากการ deploy

ตัวอย่างด้านล่างนี้เราได้รวบรวม tasks ทั่วไปที่สามารถติดตั้งโปรแกรมให้สำเร็จโดยอัตโนมัติด้วยการ hooks:

  • Pre-deploy hooks (เช่น ดำเนินการก่อนการ deploy แอปพลิเคชันจริง)
    • เพื่อตรวจสอบว่าตรงตามข้อกำหนดทั้งหมดหรือไม่
    • เพื่อติดตั้งซอฟต์แวร์ที่จำเป็นล่วงหน้า
    • เพื่อเคลียร์หรือเตรียมโฟลเดอร์เฉพาะสำหรับไฟล์
    • เพื่อบันทึกข้อมูล

  • Post deploy (หลังจากการ deploy สำเร็จ)
    • เพื่อรีสตาร์ทแอปพลิเคชันเซิร์ฟเวอร์หลังจากการ deploy
    • เพื่อติดตั้งโปรเจกต์ที่พึ่งพากัน
    • เพื่อใช้การปรับแต่งอื่นๆที่ต้องการ
    • เพื่อบันทึกข้อมูล

ด้านล่างนี้เราได้จัดเตรียมตัวอย่างง่ายๆสำหรับการสร้าง log file ด้วย hooks

1. เริ่มต้นด้วยการ deploy โปรเจกต์ของคุณด้วยวิธีใดก็ได้ที่คุณต้องการ โดยเราจะใช้ไฟล์เก็บถารวร HelloWorld.zip จาก Deployment Manager

2. กดปุ่มขายส่วนของ Hooks คลิก Pre hook และใส่โค้ดตามที่จัดเตรียมไว้ให้ภายในหน้าต่างการแก้ไข:

echo "$(date) - deployment start" >> ~/mylog
if ! grep -q "$(pwd)/mylog" /etc/jelastic/redeploy.conf; then
    echo "$(pwd)/mylog" >> /etc/jelastic/redeploy.conf
fi

โค้ดนี้จะเพิ่มสตริงลงในไฟล์ mylog (จะถูกสร้างขึ้นโดยอัตโนมัติใน home directory หากไม่มีอยู่) ซึ่งจะระบุการเริ่มต้นใช้งานและระบุเวลาที่เหมาะสม นอกจากนี้เราจะตรวจสอบว่าไฟล์ redeploy.conf มีไฟล์ log ที่กำหนดเองหรือไม่ และหากไม่ ให้เพิ่มบรรทัดที่เหมาะสม – ในนลักษณะดังกล่าวไฟล์จะถูกเก็บไว้หลังจากการดำเนินการ redeploy คอนเทนเนอร์ใหม่

3. สำหรับ Post hook ให้เพิ่มโค้ดต่อไปนี้:

echo "$(date) - deployment end" >> ~/mylog

และนี่คือ log สุดท้ายของการ deploy hook

4. ขั้นตอนสุดท้ายของการ deploy แอปพลิเคชันของคุณ ตรวจสอบทั้งไฟล์ mylog และ redeploy.conf เพื่อตรวจสอบการทำงานของ hooks ว่าประสบความสำเร็จ

อย่างที่คุณเห็นสคริปต์ทำงานตามที่วางแผนเอาไว้โดยให้เวลาเริ่มต้น/สิ้นสุดการปรับใช้และตรวจสอบให้แน่ใจว่าสคริปต์ได้รับการปกป้องในระหว่างการดำเนิน redeploy

หากคุณประสบปัญหาใดๆในขณะทำงานกับ hooks โปรดขอความช่วยเหลือจากผู้เชี่ยวชาญทางเทคนิคที่ Stackoverflow