ใช้ Azure pipelines แบบฟรี ๆ ไม่จำกัดนาที ด้วยการรันจาก Self Hosted
ถ้าใครใช้ azure devops น่าจะมีการใช้ตัว pipelines ที่ติดมาอยู่แล้วกันมาบ้าง ซึ่งเจ้าตัว pipelines ที่มีให้ใช้จะมีสองแบบ คือ Microsoft hosted ที่ให้ใช้ฟรี 1,800 นาที กับ Self hosted ที่ไม่จำกัดนาที
โดยทาง azure จะมีให้เราใช้ฟรี แค่อย่างละ 1 ตัว (1 Free Microsoft hosted และ 1 Free Self Hosted) ซึ่งก็เพียงพอสำหรับการใช้งาน ทำโปรเจคเล่นเองเล็ก ๆ สบาย ๆ
โดยปกติ ถ้าไม่คิดอะไรมาก เราก็ใช้ Microsoft hosted ไปอยู่แล้วสะดวกดี แล้วก็พบ error มาแบบ งง ๆ
##[error]No hosted parallelism has been purchased or granted. To request a free parallelism grant, please fill out the following form https://aka.ms/azpipelines-parallelism-request
เมื่อลองอ่าน error แล้วไปหาดูต่อ ก็พบว่า ถ้าจะใช้งาน pipelines ที่เป็น Microsoft hosted ครั้งแรก ต้องไปกรอกฟอร์มทางลิ้งที่มันบอก ทั้งนี้ต้องรออนุมัติอีก 2–3 วันทำการอีกด้วย !!
หืมมมมมม ….. ไหน ๆ เค้าก็มี Self hosted ให้เป็นอีกทางเลือกอยู่แล้ว งั้นก็ลอง config ใช้ซะเลย ไม่ต้องรอเป็นวัน ๆ
เริ่มตั้งค่าเครื่องตัวเองให้เป็น Self hosted Agent
ก่อนอื่นทุกคน ต้องมี organization กับ project อยู่แล้ว
- สร้าง Personal Access Token
ไปเมนู Personal Access Tokens จากไอค่อนตรงมุมขวาบน จากนั้นสร้าง token ด้วยชื่อที่ต้องการ รวมถึง expiration, scopes สามารถกำหนดได้ตามต้องการ หรือถ้าไม่คิดมากก็ full access เลยก็ได้
ระบบจะ generate token มาให้ copy เก็บไว้ให้ดี เพราะจะไม่สามารถกลับมาดูอีกได้ ถ้าลืมหรือหายต้องมาสร้างใหม่เท่านั้น
2. สร้าง Agent
ไปที่หน้า Agent pools โดยไปที่ project setting > Agent pools จะเห็น Agent pools ทั้งหมดที่เรามี จากนั้นให้คลิ๊ก Default
จากนั้นไปที่ tab ชื่อ Agents แล้วกด New agent เพื่อสร้างใหม่ได้เลย
จะเจอ popup ให้ทำขั้นตอน ตามแต่ละ OS ของเครื่องเราได้เลย สำหรับเครื่อง mac บางเครื่องคำสั่งtar zxvf ~/Downloads/vsts-agent-osx-x64-3.220.0.tar.gz
อาจใช้ไม่ได้ ให้เปลี่ยนเป็น tar zxvf ~/Downloads/vsts-agent-osx-x64-3.220.0.tar
แทน
รัน ./config.sh
สำหรับ mac อาจมีติด permission ให้รัน sudo spctl --master-disable
ก่อน ถ้าสำเร็จควรได้หน้าตา terminal ประมาณนี้
คำถาม Enter (Y/N) Accept the Team Explorer Everywhere license agreement now? (press enter for N) ให้ตอบ Y
คำถาม Enter server URL ให้ใส่ https://dev.azure.com/<ORGANIZATION NAME>
คำถาม Enter authentication type (press enter for PAT) ให้กด Enter เฉย ๆ
คำถาม Enter personal access tokenให้ใส่ token ที่ generate ได้จากข้อ 1.
คำถาม Enter agent pool (press enter for default) ให้ใส่ชื่อที่ต้องการ หรือจะเคาะ Enter เลยตาม default name ก็ได้
คำถาม Enter agent name ให้ใส่ชื่อที่ต้องการ หรือจะเคาะ Enter เลยตาม default name ก็ได้
คำถาม Enter work folder (press enter for _work)ให้ใส่ path directory ที่จะมาเป็นที่ที่ไว้เก็บไฟล์ต่าง ๆ ของการรัน pipelines ตัวอย่างผมสร้าง folder มาใหม่ชื่อ azure_self_host
จากนั้นเอา path ของ folder มาใส่ คือ /Users/{USER_MACBOOK_NAME}/azure_self_host
เข้าไปตรวจสอบที่หน้า Agents จะเจอที่เราเพิ่งสร้างไป status เป็น offline
3. Start Agent
รัน command ./run.sh
ถ้าถูกต้อง ที่หน้า Agents บนเว็บ status จะเปลี่ยนจาก offline เป็น online โดยถ้าจะใช้งาน self host agent สถานะต้องเป็น online เสมอ
4. แก้ไขไฟล์ azure-pipelines.yml ให้ใช้ self host agent
ในไฟล์ azure-pipelines.yml
ส่วนของ
pool:
vmImage: ubuntu-latest
ให้เปลี่ยนเป็น
pool:
name: default
vmImage: {AGENT NAME}
จากนั้นก็ push branch ให้มันทำการรัน pipelines จะเห็น pipelines กำลังทำงาน
แวะมาดูที่ folder ที่ในเครื่องเราหน่อย จะเห็นว่ามีไฟล์จากการรัน pipelines มาเก็บที่เครื่องเราไว้
เรียบร้อยครับ ทีนี้ระหว่างรอใช้ Microsoft hosted เราก็ใช้ Self hosted ไปก่อน ไม่มีจำกัดเวลาใช้งานอีกด้วย แต่อย่าลืมว่า free แค่ 1 Self hosted นะะะ