วิธี reproduce error บน Travis CI
วันก่อนเจอ error บน Travis CI แต่ reproduce บนเครื่องตัวเองไม่ได้ ทำให้แก้ยากมากเพราะทุกครั้งที่อยากลองอะไร ต้อง push ไปบน git แล้วให้ travis CI trigger build ให้ ทำให้ feedback loop นานมาก และก็เปลือง quota ด้วย เลยลองค้นดูว่าสามารถดึง worker ของ travis CI มาเป็น docker image บนเครื่องตัวเองได้ไหมนะ
พอลองค้นดูก็เจอวิธีจนได้ ค้นลำบากเหมือนกัน
เล่าย่อ ๆ คือใน build log บน travis CI จะมี id ของ worker instance อยู่
Worker informationhostname: 932754c2-e27d-4578-9d0a-b270b4022bd5@1.worker-com-7658dbcdc9-p7hzh.gce-production-1version: 6.2.22 https://github.com/travis-ci/worker/tree/858cb91994a513269f2fe9782c15fc113e966231instance: travis-job-d4da3b88-fda0-480b-917e-fbb33450ae18 travis-ci-sardonyx-xenial-1637079384-27de12ec (via amqp)startup: 6.392036227s
อย่างกรณีด้านบน worker คือ travisci/ci-sardonyx
(ดูบรรทัด instace:
) พอรู้แบบนี้แล้ว ก็ให้ไปดึงมา
docker pull travisci/ci-sardonyx
คร่าว ๆ ก็แค่นี้แหละ ถ้าอยากรู้ขั้นตอนละเอียดกว่านี้ลองอ่านในบทความที่ผมอ้างอิงด้านล่างนะ
แต่พอผมลองจริง ๆ มันก็ยังไม่ตรงปกเท่าไหร่…
เพราะใน travis.yml
ของผม มีการกำหนด language
ด้วย
language: node_js
node_js:
- lts/*
ซึ่ง image ที่ดึงมามันไม่มี node ไปค้น ๆ ดูเจอว่ามันใช้ nvm ในการกำหนด node version ก็เลยต้องไปใช้ nvm install
ในการลง node version เดียวกันมาเพื่อ reproduce แทน ก็ถือว่าพอถูไถ ดีกว่าไม่มีอะไรเลย
หวังว่าจะเป็นประโยชน์นะครับ :)