ทำ CI/CD ด้วย GitHub Actions และ Cloud Build


ทำ CI/CD ด้วย GitHub Actions และ Cloud Build

ในบทความนี้เราจะใช้ Github Actions สร้าง Release อัตโนมัติ ร่วมกับ Cloud Build ให้ build และ deploy อัตโนมัติทุกครั้งที่เรา push ขึ้น GitHub

1. Github Actions คืออะไร ?

2. สร้าง workflow ด้วย GitHub

3. สร้าง Cloud Build ใน Google Cloud Platform

1. Github Actions คืออะไร ?

Actions มันคือวิธีการใหม่ที่จะสร้าง workflow สำหรับนำ sourcecode บน GitHub ไปดำเนินการต่อ โดยมี trigger จาก Github events โดย workflow จะประกอบไปด้วย หลายๆ action ร้อยเรียงกันไป แต่ว่า! Action ไม่สามารถ trigger Action ของอีกอันได้(งงไหมหว่า) เช่น เมื่อมีคน push เข้ามาที่ branch main ก็ให้ deploy ไปที่ host ที่เราต้องการโดยอัตโนมัติทันที เป็นต้น

เราสามารถไปหา action ต่างๆ ที่มีคนทำไว้ให้เราแล้วได้ที่ GitHub Marketplace

ซึ่งแน่นอนว่าเราจะใช้ของที่ทำไว้แล้วค่ะ ไม่ได้ทำเอง ฮ่าาาาา

2. สร้าง Workflow ด้วย GitHub

1) สร้าง workflow

ก่อนอื่นเลย เราจะสร้าง workflow ไว้ใน .github/workflows/ โดยเขียนไว้ในไฟล์ .yml ให้เราเข้าไปใน GitHub และเข้าไปที่ Actions > Set up this work flow

2) สร้างไฟล์ generate-tag.yml

เขียน code ตามภาพได้เลย หรือสามารถดูฉบับเต็มได้จากที่นี่ GitHub Tag แล้วก็กด Start commit ได้เลย

จากโค้ดจะเห็นว่า

on:

push:

branches:

- master

กล่าวคือ workflow จะทำงานก็ต่อเมื่อมีใครสักคน push code ขึ้นมาที่ branch master

การใช้คำสั่ง uses มีความหมายว่าให้รัน action ตามที่ระบุไว้ กรณีนี้คือ ขั้นตอนแรกให้รัน action จาก actions/checkout@v2 พอรันเสร็จแล้ว ขั้นตอนที่สองก็ให้รัน action จาก mathieudutour/github-tag-action@v5 แล้วก็รัน actions/create-release@v1 ตามลำดับ

ขั้นตอนการทำงาน เป็นดังนี้

- Set a job

- Run action/checkout@v2

- Bump version and push tag

    Tag นั้นจะเริ่มต้นจาก v0.0.0(v.x.y.z)

    • v คือบอกว่าเป็นเวอร์ชั่นอะไร
    • x คือ Major เวอร์ชั่น
    • y คือ Minor เวอร์ชั่น
    • z คือ Patch เวอร์ชั้น

    - Create a GitHub release

    - Post Run action/checkout@v2

    - Complete job

    ภาพตัวอย่าง Google Actions สร้าง Release อัตโนมัติ หลังมีการ Push ไปที่ branch master

    3. สร้าง Cloud Build ใน Google Cloud Platform

    ให้เราเข้าไปใน GCP Console และเข้าไปที่ Cloud Builds > Trigger เพื่อไปสร้าง Trigger เมื่อเข้าไปแล้วก็กด Add Trigger ได้เลย

    เมื่อเราเข้ามาแล้ว เราก็สามารถตั้งชื่อ Trigger ได้เลย ตรง Source

    ให้เลือก GitHub Repository ที่เราต้องการ และเลือก Build Configuration ซึ่งขอให้เราเลือก Cloud Build configuration (yaml or json) และบอกตำแหน่งของ cloudbuild.yaml ของเรา

    ทีนี้ Cloud Build ก็จะ deploy ให้เราอัตโนมัติแล้ว ทุกครั้งที่เรา push ขึ้น GitHub ใน branch “master”

    การใช้ Cloud Build นั้นไม่ยากเลย เพียงแค่สร้างไฟล์ cloudbuild.yaml และสร้าง Trigger บน GCP console แค่นั้นเอง ซึ่ง cloudbuild.yaml จะเป็นเสมือนชุดคำสั่งให้ Cloud Build ทำตาม สามารถอ่านและทำตาม step by step อย่างละเอียดได้ที่ blog ของคุณบอสได้ที่นี่ค่ะ

    Written by Mallika Somporn

    Cloud Ace Thailand

    ทำความรู้จักกับเทคโนโลยีอื่นๆ บน Google Cloud กับกิจกรรม webinar

    ลงทะเบียนเข้าร่วมฟรี ! คลิกที่นี่

    Make It Now!

    หากคุณสนต้องการคำปรึกษา Cloud Ace Thailand พร้อมให้บริการที่จะสนับสนุนคุณตั้งแต่ การให้คำปรึกษา จนถึงการออกแบบระบบ ติดตั้งระบบ ย้ายระบบ ในฐานะ Google Cloud Partner ที่มีความเชี่ยวชาญ และได้รับรางวัล Service partner of the year ในปี 2019

    ติดต่อเรา th_sales@cloud-ace.com

    .