โดยใช้ AWS CodePipeline
ในบทแนะนำสอนการใช้งานนี้ คุณจะได้เรียนรู้การสร้างไปป์ไลน์การเผยแพร่ซอฟต์แวร์แบบอัตโนมัติที่ปรับใช้แอปตัวอย่างสด คุณจะได้สร้างไปป์ไลน์โดยใช้ AWS CodePipeline ซึ่งเป็นบริการที่ช่วยสร้าง ทดสอบ และปรับใช้โค้ดของคุณทุกครั้งที่มีการเปลี่ยนแปลงโค้ด คุณจะได้ใช้บัญชี GitHub, บัคเก็ต Amazon Simple Storage Service (S3) หรือคลังเนื้อหา AWS CodeCommit เป็นตำแหน่งที่ตั้งต้นทางสำหรับโค้ดของแอปตัวอย่าง คุณยังจะได้ใช้งาน AWS Elastic Beanstalk เป็นเป้าหมายการปรับใช้แอปตัวอย่างด้วย ไปป์ไลน์ที่เสร็จสมบูรณ์ของคุณจะสามารถตรวจจับการเปลี่ยนแปลงที่เกิดขึ้นกับคลังเนื้อหาที่มีแอปตัวอย่างอยู่ และจากนั้นก็อัปเดตแอปตัวอย่างสดของคุณได้โดยอัตโนมัติ
การปรับใช้แบบต่อเนื่องจะช่วยให้คุณสามารถปรับใช้การแก้ไขไปยังสภาพแวดล้อมการผลิตอย่างอัตโนมัติ โดยไม่ต้องรอนักพัฒนาอนุมัติอย่างชัดเจน ทำให้ทั้งกระบวนการเผยแพร่ซอฟต์แวร์ดำเนินการไปได้โดยอัตโนมัติ
ทุกสิ่งที่ทำในบทแนะนำสอนการใช้งานนี้สามารถใช้กับ Free Tier ได้
จัดการทรัพยากร AWS ของคุณ
ลงชื่อเข้าใช้คอนโซลไปป์ไลน์การปรับใช้แบบต่อเนื่องของคุณจะต้องมีสภาพแวดล้อมเป้าหมายที่มีเซิร์ฟเวอร์เสมือน หรือ Amazon EC2 instance ที่จะปรับใช้โค้ดตัวอย่าง คุณจะต้องเตรียมสภาพแวดล้อมนี้ก่อนการสร้างไปป์ไลน์
ก. ในการลดความซับซ้อนของกระบวนการการตั้งค่าและกำหนดค่าของ EC2 instance สำหรับบทแนะนำสอนการใช้งานนี้ คุณจะได้ลองสร้างสภาพแวดล้อมตัวอย่างโดยใช้ AWS Elastic Beanstalk ก่อน Elastic Beanstalk ช่วยให้คุณสามารถโฮสต์เว็บแอปพลิเคชันโดยไม่ต้องเปิดใช้งาน กำหนดค่า หรือดำเนินการบนเซิร์ฟเวอร์เสมือนด้วยตัวเอง Elastic Beanstalk จะจัดเตรียมและดำเนินการโครงสร้างพื้นฐาน (เช่น เซิร์ฟเวอร์เสมือน โหลดบาลานเซอร์ เป็นต้น) และยังมอบสแตกแอปพลิเคชัน (เช่น OS, ภาษาและเฟรมเวิร์ก, เซิร์ฟเวอร์เว็บและแอปพลิเคชัน เป็นต้น) ให้แก่คุณด้วย
ข. เลือก PHP จากเมนูดรอปดาวน์จากนั้นคลิก Launch Now (เปิดใช้งานตอนนี้)
หมายเหตุ: หากคุณสร้างแอปพลิเคชัน Elastic Beanstalk แล้วก่อนหน้านี้ ให้คลิก: Create New Application (สร้างแอปพลิเคชันใหม่) ที่มุมบนขวา ตั้งชื่อแอปพลิเคชันของคุณและสร้างสภาพแวดล้อมเว็บเซิร์ฟเวอร์ใหม่ เลือก PHP เป็นแพลตฟอร์มของคุณและเลือก Single Instance (อินสแตนซ์เดี่ยว) เป็นประเภทสภาพแวดล้อม หากคุณวางแผนที่จะเข้าสู่ระบบอินสแตนซ์ของคุณจากทางไกล ให้เลือกคู่คีย์ หรือปล่อยตัวเลือกที่เหลือให้เป็นค่าเริ่มต้นและสร้างสภาพแวดล้อมสำหรับไปป์ไลน์การปรับใช้แบบต่อเนื่อง
ค. Elastic Beanstalk จะเริ่มสร้างสภาพแวดล้อมตัวอย่างสำหรับคุณเพื่อปรับใช้แอปพลิเคชันของคุณ โดย Elastic Beanstalk จะสร้าง Amazon EC2 instance, กลุ่มรักษาความปลอดภัย, กลุ่ม Auto Scaling, บัคเก็ต Amazon S3, การแจ้งเตือน Amazon CloudWatch และชื่อโดเมนสำหรับแอปพลิเคชัน
หมายเหตุ: ขั้นตอนนี้ใช้เวลาหลายนาทีจึงจะเสร็จสมบูรณ์
ในขั้นตอนนี้ คุณจะได้รับสำหรับโค้ดของแอปตัวอย่างและเลือกแหล่งข้อมูลเพื่อโฮสต์โค้ดนั้นๆ ไปป์ไลน์จะรับโค้ดจากแหล่งข้อมูลจากนั้นดำเนินการบนแหล่งข้อมูลดังกล่าว
คุณยังสามารถเลือกใช้แหล่งข้อมูล 1 จาก 3 ตัวเลือกได้แก่: คลังเนื้อหา GitHub, บัคเก็ต Amazon S3, หรือคลังเนื้อหา AWS CodeCommit เลือกตัวเลือกที่คุณต้องการจากนั้นดำเนินการตามขั้นตอนด้านล่างนี้:
ในขั้นตอนนี้ คุณจะได้สร้างและกำหนดค่าไปป์ไลน์อย่างง่ายด้วยสองขั้นตอน นั่นคือ ค้นหาแหล่งข้อมูลและปรับใช้ คุณจะต้องป้อนตำแหน่งที่ตั้งของคลังเนื้อหาและสภาพแวดล้อมการปรับใช้ให้แก่ CodePipeline
ก. คลิกที่นี่เพื่อเปิดคอนโซล AWS CodePipeline
- ในหน้าต้อนรับ ให้คลิก Create pipeline (สร้างไปป์ไลน์)
- หากคุณเพิ่งใช้งาน AWS CodePipeline เป็นครั้งแรก หน้าแนะนำจะแสดงขึ้นมาแทนหน้าต้อนรับ คลิก Get Started (เริ่มต้นใช้งาน)
ข. ในหน้า Step 1: Name:
- Pipeline name: ให้ป้อนชื่อไปป์ไลน์ของคุณ DemoPipeline
- คลิก Next step (ขั้นตอนถัดไป)
หมายเหตุ: หลังจากที่คุณสร้างไปป์ไลน์แล้ว คุณจะไม่สามารถเปลี่ยนชื่อไปป์ไลน์ได้อีก
ค. ในหน้า Step 2: Source ให้เลือกตำแหน่งที่ตั้งของแหล่งข้อมูลที่คุณเลือก จากนั้นดำเนินการตามขั้นตอนต่อไปนี้:
ง. ไปป์ไลน์การปรับใช้แบบต่อเนื่องแท้จริงจะต้องอาศัยขั้นตอนการสร้างที่โค้ดจะได้รับการรวบรวมแบบทดสอบหน่วย CodePipeline ให้คุณสามารถใส่ผู้ให้บริการการสร้างไปยังไปป์ไลน์ของคุณได้ อย่างไรก็ตาม บทแนะนำสอนการใช้งานนี้จะข้ามขั้นตอนการสร้างไป
- ในหน้า Step 3: Build ให้เลือก No Build (ไม่สร้าง)
- คลิก Next step (ขั้นตอนถัดไป)
จ. ในหน้า Step 4: Beta
- ผู้ให้บริการการปรับใช้: ให้คลิก AWS Elastic Beanstalk
- Application name: ให้คลิก My First Elastic Beanstalk
- Environment name: ให้คลิก Default-Environment
- คลิก Next step (ขั้นตอนถัดไป)
หมายเหตุ: ชื่อ "Beta" คือชื่อที่ตั้งที่เป็นค่าเริ่มต้นของขั้นตอนนี้ของไปป์ไลน์ เช่นเดียวกันกับชื่อ “Source” เป็นชื่อที่ตั้งไว้ในขั้นตอนแรกของไปป์ไลน์
ฉ. ในหน้า Step 5: Service Role:
- Service Role: ให้คลิก Create role (สร้างบทบาท)
- คุณจะถูกนำทางไปยังหน้าคอนโซล IAM ซึ่งจะอธิบายถึงบทบาท AWS-CodePipeline-Service ที่ระบบจะสร้างไว้ให้คุณ คลิก Allow อนุญาต
- หลังจากที่คุณสร้างบทบาทแล้ว คุณจะกลับไปยังหน้า Step 5: Service Role ที่ชื่อ AWS-CodePipeline-Service จะปรากฏใน Role name คลิก Next step (ขั้นตอนถัดไป)
หมายเหตุ: การสร้างบทบาทของบริการจะทำได้เพียงครั้งแรกที่คุณสร้างไปป์ไลน์ใน AWS CodePipeline เท่านั้น หากสร้างบทบาทของบริการแล้ว คุณจะสามารถเลือกบทบาทได้จากเมนูดรอปดาวน์บทบาท เนื่องจากรายการดรอปดาวน์จะแสดงบทบาทบริการของ IAM ทั้งหมดที่เกี่ยวข้องกับบัญชีของคุณ หากคุณเลือกชื่อที่ต่างไปจากค่าเริ่มต้น ให้ตรวจสอบให้แน่ใจว่าชื่อนั้นๆ เป็นที่แสดงถึงบทบาทการบริการนั้นๆ สำหรับ AWS CodePipeline ได้เป็นอย่างดี
ในขั้นตอนนี้ คุณจะได้เปิดใช้ไปป์ไลน์ของคุณ เมื่อสร้างไปป์ไลน์แล้ว ไปป์ไลน์จะเริ่มทำงานในทันที ขั้นแรก ไปป์ไลน์จะตรวจจับโค้ดแอปตัวอย่างในตำแหน่งที่ตั้งแหล่งข้อมูลของคุณ รวมไฟล์เข้าไว้ด้วยกัน จากนั้นย้ายไปยังขั้นตอนที่สองที่คุณกำหนดไว้ ระหว่างขั้นตอนนี้ ไปป์ไลน์จะส่งโค้ดไปยัง Elastic Beanstalk ซึ่งมี EC2 instance ที่จะโฮสต์โค้ดของคุณอยู่ Elastic Beanstalk จะจัดการส่งต่อโค้ดไปยัง EC2 instance
ก. ในหน้า Step 6: Review ให้ตรวจสอบข้อมูล และคลิก Create pipeline (สร้างไปป์ไลน์)
ข. หลังจากสร้างไปป์ไลน์แล้ว หน้าสถานะไปป์ไลน์ก็จะแสดงขึ้นและไปป์ไลน์ก็จะเริ่มทำงาน คุณสามารถดูความคืบหน้าและข้อความแสดงความสำเร็จและล้มเหลวในขณะที่ไปป์ไลน์ทำงานอยู่ได้
เพื่อยืนยันว่าไปป์ไลน์ของคุณทำงานอย่างถูกต้อง ให้เฝ้าติดตามความคืบหน้าของไปป์ไลน์ขณะที่ดำเนินการในแต่ละขั้นตอน สถานะของแต่ละขั้นตอนจะเปลี่ยนจาก No executions yet (ยังไม่มีการดำเนินการ) เป็น In Progress (กำลังดำเนินการ) จากนั้นเปลี่ยนเป็น Succeeded (สำเร็จ) หรือ Failed (ล้มเหลว) การทำงานของไปป์ไลน์ในครั้งแรกควรจะเสร็จสิ้นในไม่กี่นาที
ค. ในส่วนสถานะสำหรับขั้นตอนเบต้า ให้คลิกAWS Elastic Beanstalk
ง. คอนโซล AWS Elastic Beanstalk จะแสดงขึ้นพร้อมรายละเอียดการปรับใช้
- คลิกที่สภาพแวดล้อมที่คุณสร้างขึ้นก่อนหน้านี้ที่มีชื่อว่า Default-Environment
จ. คลิกที่ URL ที่ปรากฏอยู่ที่ส่วนขวาบนของหน้าเพื่อดูเว็บไซต์ตัวอย่างที่คุณจะปรับใช้
ในขั้นตอนนี้ คุณจะต้องแก้ไขโค้ดตัวอย่าง แล้วบันทึกการเปลี่ยนแปลงไปยังคลังเนื้อหาของคุณ CodePipeline จะตรวจจับโค้ดตัวอย่างที่อัปเดตแล้วของคุณจากนั้นจะดำเนินการปรับใช้ไปยัง EC2 instance ของคุณผ่าน Elastic Beanstalk
โปรดทราบว่าหน้าเว็บตัวอย่างที่คุณปรับใช้นั้นอ้างอิงมาจาก AWS CodeDeploy ซึ่งเป็นบริการที่ปรับใช้โค้ดโดยอัตโนมัติ ใน CodePipeline นั้น CodeDeploy ทำหน้าที่เป็นทางเลือกในการใช้งาน Elastic Beanstalk สำหรับการดำเนินการปรับใช้ มาลองอัปเดตโค้ดตัวอย่างเพื่อให้โค้ดแสดงสถานะได้ถูกต้อง ว่าคุณได้ปรับใช้ตัวอย่างแล้วโดยใช้ Elastic Beanstalk
ง. กลับไปยังไปป์ไลน์ในคอนโซล CodePipeline ในไม่กี่นาที คุณจะเห็นว่าส่วน Source เปลี่ยนเป็นสีน้ำเงิน ซึ่งบ่งบอกว่าไปป์ไลน์ได้ตรวจพบการเปลี่ยนแปลงที่คุณสร้างขึ้นกับคลังเนื้อหาแหล่งข้อมูล หากเหตุการณ์นี้เกิดขึ้น ระบบจะย้ายโค้ดที่อัปเดตแล้วไปยัง Elastic Beanstalk โดยอัตโนมัติ
- หลังจากสถานะไปป์ไลน์แสดงขึ้นว่า สำเร็จแล้ว ในส่วนสถานะสำหรับขั้นตอนเบต้า ให้คลิกที่ AWS Elastic Beanstalk
จ. คอนโซล AWS Elastic Beanstalk จะแสดงขึ้นพร้อมรายละเอียดการปรับใช้ เลือกสภาพแวดล้อมที่คุณสร้างขึ้นก่อนหน้านี้ที่มีชื่อว่า Default-Environment
ฉ. คลิกที่ URL ที่ปรากฏอยู่ที่ส่วนขวาบนของหน้าเพื่อดูเว็บไซต์ตัวอย่างอีกครั้ง ข้อความของคุณจะได้รับการอัปเดตโดยอัตโนมัติผ่านไปป์ไลน์การปรับใช้ต่อเนื่อง
ในการป้องกันไม่ให้มีค่าใช้จ่ายเพิ่มเติมภายหลัง คุณจะต้องลบทรัพยากรที่คุณเปิดใช้ไปตลอดบทแนะนำสอนการใช้งานนี้ทั้งหมด ซึ่งรวมถึงไปป์ไลน์ แอปพลิเคชัน Elastic Beanstalk และแหล่งข้อมูลที่คุณสร้างไว้เพื่อโฮสต์โค้ด
ก. ขั้นแรก คุณจะต้องลบไปป์ไลน์ของคุณก่อน:
- ในมุมมองไปป์ไลน์ ให้คลิก Edit (แก้ไข)
- คลิก Delete (ลบ)
- พิมพ์ชื่อไปป์ไลน์ของคุณ จากนั้นคลิก Delete (ลบ)
ข. ขั้นที่สอง ให้ลบแอปพลิเคชัน Elastic Beanstalk ของคุณ:
- ไปที่คอนโซล Elastic Beanstalk
- คลิก Actions (การดำเนินการ)
- จากนั้นคลิก Terminate Environment (ยกเลิกสภาพแวดล้อม)
คุณได้สร้างไปป์ไลน์เผยแพร่ซอฟต์แวร์อัตโนมัติโดยใช้ AWS CodePipeline สำเร็จแล้ว! ด้วย CodePipeline คุณสามารถสร้างไปป์ไลน์ที่ใช้งาน GitHub Amazon S3 หรือ AWS CodeCommit เป็นตำแหน่งที่ตั้งแหล่งข้อมูลสำหรับโค้ดแอปพลิเคชันและปรับใช้โค้ดกับ Amazon EC2 instance ที่จัดการโดย AWS Elastic Beanstalk ได้ ไปป์ไลน์ของคุณจะปรับใช้โค้ดของคุณทุกครั้งที่มีการเปลี่ยนแปลงโค้ด เหลืออีกเพียงขั้นตอนเดียวเท่านั้นในการปรับใช้แบบต่อเนื่อง!
เมื่อคุณได้เรียนรู้เกี่ยวกับการสร้างไปป์ไลน์ง่ายๆ โดยใช้ AWS CodePipeline แล้ว คุณสามารถเรียนรู้เพิ่มเติมได้โดยไปที่ทรัพยากรต่อไปนี้
- สร้างไปป์ไลน์ขั้นสูงที่ประกอบไปด้วย 4 ขั้นตอนการทำงานได้โดยดำเนินการตามคู่มือนี้ ไปป์ไลน์นี้ใช้งานคลังเนื้อหา GitHub สำหรับแหล่งข้อมูลของคุณ รวมถึงใช้งาน Jenkins Build Server เพื่อสร้างและทดสอบโปรเจกต์ และแอปพลิเคชัน AWS CodeDeploy เพื่อปรับใช้โค้ดที่สร้างไปยังเซิร์ฟเวอร์ที่ดำเนินการ
- เริ่มต้นไปป์ไลน์ 4 ขั้นตอนได้อย่างรวดเร็วด้วย Jenkins Build Server โดยใช้เครื่องมือเริ่มต้นใช้งานไปป์ไลน์ของเรา
- เรียนรู้เพิ่มเติมเกี่ยวกับการนำส่งแบบต่อเนื่อง