Cypress — รันผ่าน dockerfile agent

tumit
odds.team
Published in
2 min readJan 29, 2020

ยังอยู่ในซี่รีย์ จด Cypress อยู่

รอบที่แล้วมั่วว่าไม่ต้อง npm install แต่พอลองเช็คดี ๆ กลายเป็นไม่ใช่ มันยังต้องการอยู่ แต่ถ้าต้อง npm install ก็ไม่สวยอีก อยากได้รัน Docker image แบบคลีน ๆ แบบใช้แล้วรันได้เลย เลยได้ท่านี้มา

ใช้ Jenkins agent เป็น dockerfile

จริง ๆ ตอนแรกกะ build & publish Docker image ไว้ซักที่แล้วเปลี่ยนมาใช้ image ตัวนี้แทน ดูไปดูมา Jenkins มีท่าที่สามารถ build Docker image ณ runtime ได้เลย ไม่ต้องไป publish เออดี ลองดีกว่า

เปลี่ยน agent จาก docker เป็น dockerfile

ของเดิมเราใช้เป็น agent docker เราก็เปลี่ยนเป็น dockerfile ทำให้เราสามารถลบ npm install ออกไปได้

ของเดิม agent docker
ของใหม่ แค่เปลี่ยน agent เป็น dockerfile

ย้าย npm install มาที่ Dockerfile แทน

คราวนี้ npm install ที่เราลบออก ก็ย้ายมาแปะที่ Dockerfile แทน ข้อดีก็คือถ้าเรามี libs อื่น ๆ มันก็จะ install ให้ไปพร้อมกันก่อนรันเลย (ในกรณีเราคือ cypress-cucumber-preprocessor)

ขั้นตอนง่าย ๆ คือ

  • ใช้ cypress/included เป็นฐานเหมือนเดิม
  • copy ไฟล์ package*.json มา
  • แล้ว install ซะ
Dockerfile วางไว้ที่ root dir เลย

เสร็จแล้วก็รัน Job เลย

มัน build Docker image ณ runtime เลย tag: 91625d3aef11513d2b8ab4215b0c5c8bd015eabc
แลัวก็ใช้เจ้า 91625d3aef11513d2b8ab4215b0c5c8bd015eabc รัน test:ci
รัน #2 มันก็ build ใหม่แต่ด้วยความที่มันเป็น Docker พอ cached ได้ก็ build แป๊บเดียว

~ จบปิ๊ง

Refs:

--

--