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!
 
ขอบคุณที่มาข้อมูลจาก
Gitlab CI/CD - Gitlab
Get started with GitLab CI/CD - Gitlab
GitLab Runner - Gitlab
You may also like
CSS Framework ไหนดีกว่ากัน ระหว่าง Tailwind เเละ Bootstrap
CSS Framework ไหนดีกว่ากัน ระหว่าง Tailwind เเละ Bootstrap
AUG 06, 2021AN HOUR AGO READ
Front-end Tools
Low Code Framework ทำงานอย่างไร?
Low Code Framework ทำงานอย่างไร?
SEP 03, 202111 MINUTES AGO READ
Front-end Tools
Back-end Tools
Automated Process
งานเบาขึ้น ให้ HR Bot ช่วยงานในช่วง Work from Home
งานเบาขึ้น ให้ HR Bot ช่วยงานในช่วง Work from Home
MAY 14, 202118 HOURS AGO READ
Digital Transformation
Bot
5 ปัจจัยหลัก ที่ใช้ประเมินการทำงาน Developer
5 ปัจจัยหลัก ที่ใช้ประเมินการทำงาน Developer
JUN 04, 202111 DAYS AGO READ
Back-end Tools
Front-end Tools

SUBSCRIBE TO OUR

NEWS
LETTER .

Code , Consult , Communicate

Copyright © 2020 CODIUM Company Limited.