สร้าง build อัตโนมัติด้วย CodeBuild และ buildspec.yml

การทำ Deployment อัตโนมัติบน AWS

Dunieski Otano

Amazon Web Services Solutions Architect

CodeBuild ทำอะไรบ้าง

  • CodeBuild คือ บริการ build แบบจัดการครบวงจร
  • ไม่ต้องจัดเตรียมหรือดูแลเซิร์ฟเวอร์
  • รัน build ใน คอนเทนเนอร์ชั่วคราว
  • ขยายขนาดอัตโนมัติ จ่ายตามเวลา build ที่ใช้จริง
  • เชื่อมต่อกับ CodePipeline ในขั้นตอน Build

 

1-codebuild-managed-service-temporary-container-lifecycle.png

การทำ Deployment อัตโนมัติบน AWS

ไฟล์ buildspec.yml

  • buildspec.yml: ไฟล์ YAML ที่รากของซอร์สโค้ด
  • กำหนดสิ่งที่ CodeBuild ทำระหว่าง build
  • มี 4 ขั้นตอนที่ทำงานตามลำดับ:
    • install: ติดตั้ง dependencies และเครื่องมือ
    • pre_build: รันงานเตรียมการก่อน build
    • build: คอมไพล์โค้ด รันเทสต์
    • post_build: แพ็กเก็จ artifacts ทำความสะอาด

buildspec

การทำ Deployment อัตโนมัติบน AWS

ตัวอย่าง buildspec.yml จริง

  • install: pip install -r requirements.txt
  • pre_build: [ -z "$DB_URL" ] && exit 1
  • build: pytest tests/
  • post_build: zip -r app.zip . แล้ว echo "Build completed"

โค้ดอิดิเตอร์ธีมสว่างแสดง buildspec.yml ที่มี 4 ขั้นตอน โดย build รัน pytest tests และ post_build แพ็กเก็จโค้ดเป็น app.zip เอาต์พุตเป็น artifact ของ pipeline

การทำ Deployment อัตโนมัติบน AWS

การกำหนดค่าสภาพแวดล้อมของ build

 

4-codebuild-environment-config-compute-envvars-caching.png

  • ประเภทการประมวลผล: small, medium, large, 2xlarge
    • เลือกตามความซับซ้อนของ build และความเร็วที่ต้องการ
  • ตัวแปรสภาพแวดล้อม: ส่งค่าคอนฟิกให้ build
    • เก็บข้อมูลลับไว้ใน Parameter Store หรือ Secrets Manager
  • การแคช dependency: แคชแพ็กเกจที่ดาวน์โหลดไว้ระหว่าง build
    • ลดเวลา build ได้มากสำหรับโปรเจกต์ขนาดใหญ่
การทำ Deployment อัตโนมัติบน AWS

เอาต์พุต artifact และการเชื่อมต่อ pipeline

 

5-codebuild-artifact-output-s3-codepipeline-handoff.png

  • ส่วน artifacts กำหนดสิ่งที่ CodeBuild ส่งออก
  • files: รายการไฟล์หรือรูปแบบ; base-directory: เส้นทางราก
  • artifact ที่ได้เก็บไว้ใน S3 แล้วส่งต่อไปขั้นตอนถัดไปอัตโนมัติ
  • เส้นทาง artifact ที่ผิดทำให้ deploy ล้มเหลวแม้ build จะสำเร็จ
การทำ Deployment อัตโนมัติบน AWS

ขั้นตอน build-test-deploy แบบครบวงจร

  • นักพัฒนา push โค้ดไปยัง CodeCommit
  • CodePipeline ทำงานอัตโนมัติ
  • CodeBuild: install -> pre_build -> build -> post_build
  • artifact ของ build ส่งต่อไปยัง CodeDeploy
  • แอปพลิเคชันถูก deploy ไปยังสภาพแวดล้อมเป้าหมาย

6-full-cicd-chain-codecommit-codebuild-phases-codedeploy.png

การทำ Deployment อัตโนมัติบน AWS

มาฝึกกันเถอะ!

การทำ Deployment อัตโนมัติบน AWS

Preparing Video For Download...