เนื่องจากมีคนชวนเล่น CircleCI เมื่อต้นเดือนที่ผ่านมา เพิ่งจะได้มาลองเล่นพบว่า CircleCI ทำอะไรได้หลายอย่างมากกว่า เครื่องมือ CI/CD เดิมๆ ที่มีอยู่ วิธีการใช้งานก็ง่ายมากๆ เพียงแค่เชื่อม repository ของโครงการของคุณที่ต้องการใช้คู่กับ CircleCI จากนั้นก็เขียน config ในรูปแบบไฟล์ yaml สั่ง push code ใหม่เข้า repository เท่านี้ก็เรียบร้อยแล้ว CircleCI จะทำหน้าที่ของมันโดยอัตโนมัติ CircleCI รองรับการทำ CI/CD ได้หลายภาษา เช่น Ruby/Rails, Python, Node.js, PHP, Java, Haskell นอกจากนี้ยังรองรับ Mobile Platform อย่าง Android, iOS และรองรับการทำงานกับ Docker Container ด้วย
อันดับแรก สมัครสมาชิก CircleCI กันก่อนที่ https://circleci.com
จากนั้น clone หรือ fork ตัวอย่างที่ anoochit/docker-elasticsearch จากนั้นผูก repository กับ GitHub ของคุณ เลือก repository ที่ต้องการ
เพิ่ม Environment Variable ใน Project Settings > Environment variables เพิ่มค่า DOCKER_EMAIL, DOCKER_USER, DOCKER_PASS ลงไปเพื่อใช้ในการ push ไปยัง Docker Hub
CircleCI จะอ่าน build step จากไฟล์ circleci.yml ซึ่งไฟล์นี้จะบรรจุ config ต่างๆ ที่เราจะให้ CircleCI ทำงานให้ โดยมี config ต่างๆ ดังนี้
- machine: จัดการคุณสมบัติของ VM ที่คุณต้องการ
- checkout: สั่ง checking out และ clone git repo
- dependencies: ตั้งค่า dependencies ตามภาษาที่คุณใช้ใน project นั้นๆ
- database: เตรียมฐานข้อมูลสำหรับการทดสอบ
- test: สั่ง run test
- deployment: สั่ง deploy code ไปยังเว็บเซิร์ฟเวอร์
จากนั้นมาลองดู circleci.yml กัน แก้ไข circleci.yml ให้เข้าใจง่ายมากขึ้นให้ build step มีขั้นตอนง่ายๆ ดังนี้
- machine กำหนดส่วน service เป็น docker
- dependencies ให้สั่ง build image จาก repository
- test ทดสอบ run แล้วรอตรวจสอบว่า elasticsearch ใน port 9200 ทำงานหรือไม่
- deployment หากทดสอบผ่าน จึงสั่ง push ขึ้น Docker Hub
แก้ไข circleci.yml ให้เป็นข้อมูลของคุณ จากนั้น commit และ push กลับไปที่ repository คุณจะพบว่า CircleCI ทำงานทันทีโดยทำงานตาม build step ที่เรากำหนด
เขียวผ่านตลอด
พร้อม push ขึ้น Docker Hub เรียบร้อย