Share this
มารู้จักกับ CI/CD ตัวช่วยให้งานโปรแกรมเมอร์ง่ายขึ้น
Issues
April
Programmer
Categories:
#Bot#Automated Process#Front-end Tools
Inspired by: Piyapan, Natchaya
Views
CI/CD คืออะไร?
Continuous Integration (CI) คือกระบวนการรวบรวมโค้ดที่ได้รับการพัฒนาจากสมาชิกเเต่ละคนในทีมให้เป็นชิ้นเดียว จากนั้นทำการทดสอบด้วย Test Script เพื่อตรวจสอบว่าโค้ดแต่ละส่วนเข้ากัน ไม่เกิดข้อผิดพลาดก่อนจะรวมโค้ดไปยัง Branch Main หรือ Master
หลังจากขั้นตอนการทำ CI แล้ว เราจะดำเนินการ Continuous Delivery และ Continuous Deployment (CD) เป็นกระบวนการส่งออกโค้ดหรือระบบ ที่พัฒนาขึ้นไปยังระบบจริง หรือที่เรียกว่า Production โดยการทำงานของ CD จะเป็นการทำงานแบบอัตโนมัติ
ข้อเเตกต่างของ Continuous Delivery และ Continuous Deployment (CD)
- Continuous Deployment เป็นกระบวนการที่ทำครบทุกขั้นตอน ตั้งแต่รวมโค้ดของเเต่ละคนในสมาชิกไปจนถึงส่งออกโค้ดขึ้นระบบจริงแบบอัตโนมัติทั้งหมด
- Continuous Delivery มีขั้นตอนการทำงานที่คล้ายกับ Continuous Deployment แต่ไม่รวมการส่งออกโค้ดขึ้นระบบจริง ซึ่งการทำงานในส่วนนี้จะเป็นการทำงานแบบไม่อัตโนมัติ (Manual Process) หรือรูปแบบอื่นตามการทำงานของทีม
หากสรุปโดยง่าย CI/CD คือขั้นตอนการทำงานที่ครอบคลุมตั้งแต่การรวบรวมโค้ดจากสมาชิกในทีม, การทดสอบความเข้ากันได้ของโค้ด, และการส่งออกโค้ดไปยัง Production แบบอัตโนมัติ
ภาพประกอบการทำงานของ CI/CD
วิธีเดิมก่อนทำ CI/CD ไม่ตอบโจทย์อย่างไร?
เพื่อให้เข้าใจถึงประโยชน์ของ CI/CD และเหตุผลว่าทำไมโปรเเกรมเมอร์หลายคน เลือกใช้ CI/CD มาดูกันว่าการทำงานก่อนจะใช้ CI/CD เป็นอย่างไร
เเต่ก่อนเมื่อโปรแกรมเมอร์ในทีมเเต่ละคนเพิ่มโค้ดเข้ามา จะต้องมีโปรแกรมเมอร์ 1 คน จัดการ Run Command ต่างๆ เเบบทำมือ ซึ่งในเเต่ละวันโปรแกรมเมอร์ Commit Code มากกว่า 1 ครั้ง โปรแกรมเมอร์คนที่ต้องรวบรวมของทุกคนจะต้องทำกระบวนการนั้นซ้ำซ้อน (Repetitive) ส่งผลให้โปรแกรมเมอร์ไม่มีความสุขในการทำงาน เนื่องจากเป็นการทำงานที่น่าเบื่อ
การทำงานก่อนมี CI/CD
เราอาจสามารถพูดได้ว่า การทำงานในรูปแบบนี้คือการทำงานแบบเป็นรูปแบบเดิมๆ ไม่มีอะไรแปลกใหม่ ดังนั้นการนำ ขั้นตอนการทำงานโดยอัตโนมัติ หรือ Automated Process มาร่วมกับการทำงานผ่าน CI/CD จึงตอบโจทย์มากกว่าในทุกเเง่
- ช่วยลดระยะเวลาการทำงานในส่วนที่ไม่จำเป็น ประหยัดเวลาการทำงาน
- สนับสนุนให้โปรแกรมเมอร์ทำงานส่วนอื่นที่ก่อเกิดประโยชน์ให้มากกว่า
- พัฒนารูปแบบการทำงานให้มีผลลัพธ์ที่มีประสิทธิภาพมากขึ้น กระบวนการ CI/CD เข้ามาช่วยตรวจสอบการทำงานของระบบ ข้อผิดพลาดต่างๆที่อาจเกิดขึ้น ตั้งแต่ขั้นตอนการพัฒนาระบบ จึงทำให้มั่นใจได้ว่าโค้ดทั้งหมดที่จะส่งไปยังระบบจริง มีคุณภาพและเป็นไปตามมาตรฐานที่คาดหวังไว้
การทำงานแบบ CI/CD
การทำงานของ Gitlab CI/CD
ขั้นตอนการติดตั้งเพื่อเริ่มใช้งาน Gitlab CI/CD
1. เพิ่มไฟล์ชื่อ “gitlab-ci.yml” ไปยัง Root ของ Project โดยชื่อไฟล์นี้เป็นมาตรฐานที่ตั้งโดย Gitlab
การวางไฟล์ gitlab-ci.yml
- ในไฟล์จะต้องมีการกำหนด Stage หรือ Topic of Deployment ต่างๆ ซึ่งผู้ใช้งานสามารถออกแบบและกำหนดเองได้ตามความเหมาะสม
- ภายใต้ Stage ผู้ใช้งานสามารถกำหนด Job ได้ว่า ในแต่ละ Stage มี Job อะไรบ้าง และใน Job นั้นเองจะมี Script เป็นตัวกำหนดว่าต้องทำการ Run Command ใดบ้าง
- โปรแกรมเมอร์สามารถสร้าง เงื่อนไข (Condition) สำหรับการรัน Job ได้ โดยหนดว่าให้ Run ทุกครั้งเมื่อมีการทำ Merger Request (MR) หรือมีการ Push Changes ไปยังไฟล์ที่กำหนด ดังนั้นหากเรามีการติดตั้งเครื่องมือเหล่านี้ครบถ้วน เราจะสามารถใช้ Automated Prcoess ในการทำผ่านกระบวนการ CI/CD ได้
ตัวอย่างเนื้อหาในไฟล์
2. ติดตั้ง Application หรือเครื่องมือที่จะทำการเชื่อมต่อ Gitlab CI/CD กับ Gitlab Repository เพื่อสร้าง Automated Process สำหรับการ deploy ทุกๆครั้งที่มีการ Push Commit เข้ามายัง Gitlab
หนึ่งในเครื่องมือที่เราใช้อยู่คือ Gitlab Runner ซึ่งเป็นเครื่องมือที่ติดตั้งง่าย เหมาะกับการใช้งาน และสามาถจัดการการทำงานได้ตามความต้องการ ช่วยสนับสนุนการทำงานของ Gitlab CI/CD
โดยเครื่องมือนี้เป็น Open Source ของ Gitlab ที่จะให้ Gitlab CI/CD สามารถทำงานได้ หรือช่วยในการ Run Job ตามที่ถูกกำหนดไว้ในไฟล์ gitlab-ci.yml
ตัวอย่างการทำงาน
หากมีการติดตั้ง Gitlab Runner พร้อมกับเพิ่มไฟล์ gitlab-ci.yml แล้ว ทุกๆครั้งที่ Push Code/Commit ตามเงื่อนไขที่กำหนด ระบบจะเริ่มกระบวนการ CI/CD ทันที
โดยเมื่อมีการ Push Code ไปยังไฟล์ที่กำหนด ระบบจะเริ่มกระบวนการ CI/CD เพื่อทำการ Deploy ผู้ใช้งานจะสามารถตรวจสอบกระบวนการนี้ได้ที่เมนู “CI/CD” จากนั้นให้เข้าไปยัง Pipeline
เมื่อเข้ามายังเมนูดังกล่าวจะเห็น Pipeline ของการ Run Command ต่างๆ เพื่อการ Deploy หากอธิบายง่ายๆ Pipeline จะช่วยให้เรามองเห็นรูปแบบการทำงานของ CI/CD ใน Stage ต่างๆ เพื่อตรวจสอบข้อมูลการทำงานเเละสถานะ รวมถึงสามารถกดเข้าไปยังรายการนั้นๆได้
ตัวอย่างการทำงานของ CI/CD
เมื่อกดเข้าไปผู้ใช้งานจะเห็น Pipeline ของรายการนั้นๆ โดยให้สังเกตว่า ตัวหัวข้อหลักใน Pipeline เช่น Unit-test, Build-dev และ Deploy-dev คือ Stages ตามที่เราตั้งค่าไว้ในไฟล์ gitlab-ci.yml
ตัวอย่างการตั้งค่า Stages ในไฟล์ gitlab-ci.yml
ภาพประกอบตัวอย่าง Pipeline
ส่วนรายการทางด้างล่าง Stages คือ Job ที่เราตั้งค่าเอาไว้ เมื่อเกิดการ Deploy ระบบจะทำการ Trigger และเริ่ม Run Command ทั้งหมดตามที่กำหนดไว้ตามลำดับ จนกระทั่ง Code ถูก Deploy ไปยัง Server ที่กำหนดไว้ จะเห็นได้ว่า Process นี้มีการทำงานของคนเพียงแค่ขั้นตอนการ Push/ MR จากนั้นระบบที่ตั้งค่าไว้ จะดำเนินการ Deploy ทุกอย่างตามรูปแบบที่กำหนด จึงช่วยลดการทำงานที่ซ้ำซ้อน และช่วยให้โปรแกรมเมอร์สามารถทำงานอื่นๆได้อย่างมีประสิทธิภาพมากขึ้น
ทั้งหมดนี้คือข้อมูลเบื้อต้นสำหรับการทำ Gitlab CI/CD จริงๆแล้วยังมีเครื่องมืออื่นๆอีกมาก ที่ช่วยให้การทำงานเป็นไปได้ง่ายขึ้น หากมีข้อสงสัยหรือความสนใจที่ต้องการทราบเกี่ยวกับ Gitlab CI/CD เพิ่มเติม อดใจรอกันอีกสักหน่อย ทางเราจะนำเสนอการทำงานในรูปแบบอื่นๆ หรือเครื่องมือที่เป็นประโยชน์เพิ่มเติมในอนาคต Stay tuned!
ขอบคุณที่มาข้อมูลจาก
You may also like
Low Code Framework ทำงานอย่างไร?
ก.ย. 25, 2024•อ่านเมื่อ 1 วันที่แล้ว
Back-end Tools
Front-end Tools
Automated Process
วิธีสร้าง Chatbot ในแบบฉบับง่ายๆ ไม่ใช่ คนTech ก็ทำได้
ก.ย. 25, 2024•อ่านเมื่อ 28 นาทีที่แล้ว
Back-end Tools
Front-end Tools
Digital Transformation
HR Bot สร้างขึ้นมาได้อย่างไร
ก.ย. 25, 2024•อ่านเมื่อ 4 ชั่วโมงที่แล้ว
Bot
Automated Process
Front-end Tools
ยกระดับองค์กรสู่มาตรฐาน ISO ด้วยระบบจัดการเอกสารออนไลน์
ก.ย. 25, 2024•อ่านเมื่อ 3 ชั่วโมงที่แล้ว
Tech & Legal
Automated Process
Digital Transformation